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