i_assert(peer != NULL);
client = peer->client;
+ i_assert(conn->to_requests == NULL);
+
if (client->waiting)
io_loop_stop(client->ioloop);
void http_client_connection_start_request_timeout(
struct http_client_connection *conn)
{
- struct http_client_peer *peer = conn->peer;
- struct http_client *client = peer->client;
- const struct http_client_settings *set = &client->set;
- unsigned int timeout_msecs =
- set->request_timeout_msecs;
+ struct http_client_request *const *requestp;
+ unsigned int timeout_msecs;
if (conn->pending_request != NULL)
return;
i_assert(array_is_created(&conn->request_wait_list));
- if (array_count(&conn->request_wait_list) > 0) {
- struct http_client_request *const *requestp;
- requestp = array_idx(&conn->request_wait_list, 0);
- timeout_msecs = (*requestp)->attempt_timeout_msecs;
- }
+ i_assert(array_count(&conn->request_wait_list) > 0);
+ requestp = array_idx(&conn->request_wait_list, 0);
+ timeout_msecs = (*requestp)->attempt_timeout_msecs;
if (timeout_msecs == 0)
;
connection_input_resume(&conn->conn);
if (array_count(&conn->request_wait_list) > 0)
http_client_connection_start_request_timeout(conn);
+ else
+ http_client_connection_stop_request_timeout(conn);
}
static void
} else {
req = NULL;
payload_type = HTTP_RESPONSE_PAYLOAD_TYPE_ALLOWED;
+ i_assert(conn->to_requests == NULL);
}
/* drop connection with broken output if last possible input was
/* no more requests waiting for the connection */
req = NULL;
payload_type = HTTP_RESPONSE_PAYLOAD_TYPE_ALLOWED;
+ http_client_connection_stop_request_timeout(conn);
}
/* drop connection with broken output if last possible input was
int ret;
reqs = array_get(&conn->request_wait_list, &count);
+ i_assert(count > 0 || conn->to_requests == NULL);
if (count == 0 || !conn->output_locked)
return 0;