From 2e6f9d35d7b09ef87f347c67e7d77a28731a6bda Mon Sep 17 00:00:00 2001 From: Stephan Bosch Date: Mon, 16 Sep 2013 01:02:03 +0300 Subject: [PATCH] lib-http: http-client: Fixed segfault caused by earlier improvement of connection output locking. Segfault was triggered when an aborted request received a response. --- src/lib-http/http-client-connection.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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) { -- 2.47.3