From fde2e392f3003ec9adc4df7b0c395b4e498bfd28 Mon Sep 17 00:00:00 2001 From: Stephan Bosch Date: Sun, 15 Sep 2013 03:28:21 +0300 Subject: [PATCH] lib-http: http-client: Connection was using wrong request index in request_wait_list to continue sending outgoing payload. --- src/lib-http/http-client-connection.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) 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) { -- 2.47.3