From: Timo Sirainen Date: Wed, 10 Apr 2013 15:00:12 +0000 (+0300) Subject: lib-http: Don't double-free request memory when aborting them. X-Git-Tag: 2.2.rc7~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0f37e68570ccf3230748cfbc697ddddbc00e2545;p=thirdparty%2Fdovecot%2Fcore.git lib-http: Don't double-free request memory when aborting them. --- diff --git a/src/lib-http/http-client-connection.c b/src/lib-http/http-client-connection.c index b2296634b2..bf0d80a58c 100644 --- a/src/lib-http/http-client-connection.c +++ b/src/lib-http/http-client-connection.c @@ -107,9 +107,9 @@ http_client_connection_abort_error(struct http_client_connection **_conn, conn->closing = TRUE; array_foreach_modifiable(&conn->request_wait_list, req) { + i_assert((*req)->submitted); http_client_request_error(*req, status, error); - http_client_request_unref(req); - } + } array_clear(&conn->request_wait_list); http_client_connection_unref(_conn); } @@ -819,9 +819,9 @@ void http_client_connection_unref(struct http_client_connection **_conn) /* abort all pending requests */ array_foreach_modifiable(&conn->request_wait_list, req) { + i_assert((*req)->submitted); http_client_request_error(*req, HTTP_CLIENT_REQUEST_ERROR_ABORTED, "Aborting"); - http_client_request_unref(req); } array_free(&conn->request_wait_list);