dovecot-2.2: lib-http: http-client: Made requests release payloa...

dovecot at dovecot.org dovecot at dovecot.org
Sat Oct 12 11:14:58 EEST 2013


details:   http://hg.dovecot.org/dovecot-2.2/rev/2d44e9025af3
changeset: 16850:2d44e9025af3
user:      Stephan Bosch <stephan at rename-it.nl>
date:      Sat Oct 12 10:54:50 2013 +0300
description:
lib-http: http-client: Made requests release payload input stream as early as possible.
This prevents deadlock conditions when used for the HTTP proxy.

diffstat:

 src/lib-http/http-client-request.c |  8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diffs (25 lines):

diff -r ad46c778981d -r 2d44e9025af3 src/lib-http/http-client-request.c
--- a/src/lib-http/http-client-request.c	Sat Oct 12 10:54:10 2013 +0300
+++ b/src/lib-http/http-client-request.c	Sat Oct 12 10:54:50 2013 +0300
@@ -543,6 +543,10 @@
 			req->callback = callback;
 			http_client_request_resubmit(req);
 			return FALSE;
+		} else {
+			/* release payload early (prevents server/client deadlock in proxy) */
+			if (req->payload_input != NULL)
+				i_stream_unref(&req->payload_input);
 		}
 	}
 	return TRUE;
@@ -563,6 +567,10 @@
 
 		http_response_init(&response, status, error);
 		(void)callback(&response, req->context);
+
+		/* release payload early (prevents server/client in proxy) */
+		if (req->payload_input != NULL)
+			i_stream_unref(&req->payload_input);
 	}
 }
 


More information about the dovecot-cvs mailing list