dovecot-2.2: lib-http: http-client: Fixed segfault caused by ear...

dovecot at dovecot.org dovecot at dovecot.org
Mon Sep 16 01:02:20 EEST 2013


details:   http://hg.dovecot.org/dovecot-2.2/rev/7fc1dcfc5e3a
changeset: 16756:7fc1dcfc5e3a
user:      Stephan Bosch <stephan at rename-it.nl>
date:      Mon Sep 16 01:02:03 2013 +0300
description:
lib-http: http-client: Fixed segfault caused by earlier improvement of connection output locking.
Segfault was triggered when an aborted request received a response.

diffstat:

 src/lib-http/http-client-connection.c |  6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diffs (23 lines):

diff -r bcaee8677d7d -r 7fc1dcfc5e3a src/lib-http/http-client-connection.c
--- 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) {


More information about the dovecot-cvs mailing list