struct http_client_connection *conn = req->conn;
int ret;
- if (req->payload_output != conn->conn.output &&
- (ret = o_stream_finish(req->payload_output)) <= 0) {
- if (ret < 0)
- http_client_connection_handle_output_error(conn);
- return ret;
- }
+ if (req->payload_output == conn->conn.output)
+ ret = o_stream_flush(req->payload_output);
+ else
+ ret = o_stream_finish(req->payload_output);
- return 1;
+ if (ret < 0)
+ http_client_connection_handle_output_error(conn);
+ return ret;
}
static int
if (ret == 0) {
e_debug(req->event,
"Not quite finished sending payload");
+ conn->output_locked = TRUE;
return 0;
}
o_stream_unref(&req->payload_output);