changeset 16756:7fc1dcfc5e3a

lib-http: http-client: Fixed segfault caused by earlier improvement of connection output locking. Segfault was triggered when an aborted request received a response.
author Stephan Bosch <stephan@rename-it.nl>
date Mon, 16 Sep 2013 01:02:03 +0300
parents bcaee8677d7d
children a114a8bfce61
files src/lib-http/http-client-connection.c
diffstat 1 files changed, 4 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-http/http-client-connection.c	Sun Sep 15 03:56:47 2013 +0300
+++ b/src/lib-http/http-client-connection.c	Mon Sep 16 01:02:03 2013 +0300
@@ -575,6 +575,10 @@
 			"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 @@
 		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) {