From: Stephan Bosch Date: Sun, 15 Sep 2013 00:28:21 +0000 (+0300) Subject: lib-http: http-client: Connection was using wrong request index in request_wait_list... X-Git-Tag: 2.2.6~93 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=fde2e392f3003ec9adc4df7b0c395b4e498bfd28;p=thirdparty%2Fdovecot%2Fcore.git lib-http: http-client: Connection was using wrong request index in request_wait_list to continue sending outgoing payload. --- diff --git a/src/lib-http/http-client-connection.c b/src/lib-http/http-client-connection.c index 4ad020346e..78c0212c07 100644 --- a/src/lib-http/http-client-connection.c +++ b/src/lib-http/http-client-connection.c @@ -241,7 +241,9 @@ http_client_connection_continue_timeout(struct http_client_connection *conn) http_client_connection_debug(conn, "Expected 100-continue response timed out; sending payload anyway"); - req_idx = array_idx(&conn->request_wait_list, 0); + i_assert(array_count(&conn->request_wait_list) > 0); + req_idx = array_idx(&conn->request_wait_list, + array_count(&conn->request_wait_list)-1); req = req_idx[0]; conn->payload_continue = TRUE; @@ -673,7 +675,8 @@ static int http_client_connection_output(struct http_client_connection *conn) } if (array_count(&conn->request_wait_list) > 0 && conn->output_locked) { - req_idx = array_idx(&conn->request_wait_list, 0); + req_idx = array_idx(&conn->request_wait_list, + array_count(&conn->request_wait_list)-1); req = req_idx[0]; if (!req->payload_sync || conn->payload_continue) {