From: Stephan Bosch Date: Sat, 17 Feb 2018 11:03:41 +0000 (+0100) Subject: lib-http: client: Uncork and flush the output stream explicitly after continuing... X-Git-Tag: 2.3.9~2261 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=daf2f019f8fb7f96c323c8f0eb397393b9694cb3;p=thirdparty%2Fdovecot%2Fcore.git lib-http: client: Uncork and flush the output stream explicitly after continuing request payload. This allows detecting any output stream errors. --- diff --git a/src/lib-http/http-client-connection.c b/src/lib-http/http-client-connection.c index dade47e575..b2c21d5b7c 100644 --- a/src/lib-http/http-client-connection.c +++ b/src/lib-http/http-client-connection.c @@ -1221,12 +1221,20 @@ http_client_connection_continue_request(struct http_client_connection *conn) if (req->payload_sync && !req->payload_sync_continue) return 0; + o_stream_cork(conn->conn.output); + tmp_conn = conn; http_client_connection_ref(tmp_conn); ret = http_client_request_send_more(req, pipelined); if (!http_client_connection_unref(&tmp_conn) || ret < 0) return -1; + if (conn->conn.output != NULL && + o_stream_uncork_flush(conn->conn.output) < 0) { + http_client_connection_handle_output_error(conn); + return -1; + } + if (!conn->output_locked) { /* room for new requests */ if (http_client_connection_check_ready(conn) > 0)