From: Stephan Bosch Date: Fri, 24 Apr 2020 20:26:26 +0000 (+0200) Subject: lib-http: http-client-connection - Fix race condition between finishing output stream... X-Git-Tag: 2.3.11.2~157 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=32fb56fd56a8ed2881ed4e8430146b5383f71b7f;p=thirdparty%2Fdovecot%2Fcore.git lib-http: http-client-connection - Fix race condition between finishing output stream and response. --- diff --git a/src/lib-http/http-client-connection.c b/src/lib-http/http-client-connection.c index e00a1a1e88..4ae7db88c2 100644 --- a/src/lib-http/http-client-connection.c +++ b/src/lib-http/http-client-connection.c @@ -1118,8 +1118,8 @@ static void http_client_connection_input(struct connection *_conn) "Got unexpected %u response; ignoring", response.status); continue; - } else if (!req->payload_sync && - req->state == HTTP_REQUEST_STATE_PAYLOAD_OUT) { + } else if (!req->payload_sync && !req->payload_finished && + req->state == HTTP_REQUEST_STATE_PAYLOAD_OUT) { /* got early response from server while we're still sending request payload. we cannot recover from this reliably, so we stop sending payload and close the