From: Stephan Bosch Date: Sun, 15 Sep 2013 22:02:03 +0000 (+0300) Subject: lib-http: http-client: Fixed segfault caused by earlier improvement of connection... X-Git-Tag: 2.2.6~68 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2e6f9d35d7b09ef87f347c67e7d77a28731a6bda;p=thirdparty%2Fdovecot%2Fcore.git lib-http: http-client: Fixed segfault caused by earlier improvement of connection output locking. Segfault was triggered when an aborted request received a response. --- diff --git a/src/lib-http/http-client-connection.c b/src/lib-http/http-client-connection.c index 7a17b7ef7e..4e2ca69368 100644 --- a/src/lib-http/http-client-connection.c +++ b/src/lib-http/http-client-connection.c @@ -575,6 +575,10 @@ static void http_client_connection_input(struct connection *_conn) "Got %u response for request %s", response.status, http_client_request_label(req)); + /* make sure connection output is unlocked if 100-continue failed */ + if (req->payload_sync && !conn->payload_continue) + conn->output_locked = FALSE; + /* remove request from queue */ array_delete(&conn->request_wait_list, 0, 1); aborted = (req->state == HTTP_REQUEST_STATE_ABORTED); @@ -582,8 +586,6 @@ static void http_client_connection_input(struct connection *_conn) http_client_request_unref(&req); conn->close_indicated = response.connection_close; - if (req->payload_sync && !conn->payload_continue) - conn->output_locked = FALSE; if (!aborted) { if (response.status == 417 && req->payload_sync) {