From 081e5fed721c09d4890c0114a0ec41a15e7a9ee3 Mon Sep 17 00:00:00 2001 From: Stephan Bosch Date: Thu, 5 Jul 2018 23:52:51 +0200 Subject: [PATCH] lib-http: http-client-request - Prevent request content stream from finishing the connection output stream. This is not supposed to happen ever, because the connection output stream needs to be available for several requests. This was at some point a problem in some of the test with the new ostream payload API. --- src/lib-http/http-client-connection.c | 1 + src/lib-http/http-client-request.c | 1 + 2 files changed, 2 insertions(+) diff --git a/src/lib-http/http-client-connection.c b/src/lib-http/http-client-connection.c index f0f1c66fdc..176aff6911 100644 --- a/src/lib-http/http-client-connection.c +++ b/src/lib-http/http-client-connection.c @@ -1434,6 +1434,7 @@ http_client_connection_ready(struct http_client_connection *conn) /* start protocol I/O */ conn->http_parser = http_response_parser_init (conn->conn.input, &set->response_hdr_limits, 0); + o_stream_set_finish_via_child(conn->conn.output, FALSE); o_stream_set_flush_callback(conn->conn.output, http_client_connection_output, conn); } diff --git a/src/lib-http/http-client-request.c b/src/lib-http/http-client-request.c index 0ea0a08ab5..7760a90a7e 100644 --- a/src/lib-http/http-client-request.c +++ b/src/lib-http/http-client-request.c @@ -1329,6 +1329,7 @@ static int http_client_request_send_real(struct http_client_request *req, str_append(rtext, "Transfer-Encoding: chunked\r\n"); req->payload_output = http_transfer_chunked_ostream_create(conn->conn.output); + o_stream_set_finish_also_parent(req->payload_output, FALSE); } else if (req->payload_input != NULL || req->payload_empty || strcasecmp(req->method, "POST") == 0 || -- 2.47.3