From 987fab8f4e143ab851c3318c8614e81bb0f2b360 Mon Sep 17 00:00:00 2001 From: Stephan Bosch Date: Wed, 25 Jan 2023 05:18:10 +0100 Subject: [PATCH] lib-http: client - Don't unlock connection output before request is fully sent This could happen at least when the payload is empty and the final LF was buffered. --- src/lib-http/http-client-request.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/lib-http/http-client-request.c b/src/lib-http/http-client-request.c index 5ec4a8ef68..7e578a6186 100644 --- a/src/lib-http/http-client-request.c +++ b/src/lib-http/http-client-request.c @@ -1073,6 +1073,13 @@ http_client_request_finish_payload_out(struct http_client_request *req) o_stream_unref(&req->payload_output); req->payload_output = NULL; } + if (conn->conn.output != NULL && + o_stream_get_buffer_used_size(conn->conn.output) > 0) { + e_debug(req->event, + "Not quite finished sending request"); + conn->output_locked = TRUE; + return 0; + } i_assert(req->request_offset < conn->conn.output->offset); req->bytes_out = conn->conn.output->offset - req->request_offset; -- 2.47.3