(Continue) status code, the client SHOULD NOT wait for an indefinite
period before sending the payload body.
*/
- if (req->payload_sync) {
+ if (req->payload_sync && !conn->peer->seen_100_response) {
i_assert(req->payload_chunked || req->payload_size > 0);
i_assert(conn->to_response == NULL);
conn->to_response = timeout_add(HTTP_CLIENT_CONTINUE_TIMEOUT_MSECS,
"Got 100-continue response after timeout");
return;
}
+ conn->peer->no_payload_sync = FALSE;
+ conn->peer->seen_100_response = TRUE;
conn->payload_continue = TRUE;
http_client_connection_debug(conn,
"Got expected 100-continue response");
unsigned int destroyed:1; /* peer is being destroyed */
unsigned int no_payload_sync:1; /* expect: 100-continue failed before */
+ unsigned int seen_100_response:1;/* expect: 100-continue succeeded before */
unsigned int last_connect_failed:1;
};