From 7ef7bab33db35986d3ced393ce8615f4a7c5a833 Mon Sep 17 00:00:00 2001 From: "Evgeny Grin (Karlson2k)" Date: Sun, 29 Nov 2020 21:44:22 +0300 Subject: [PATCH] mhd_send: improved setting of sk_cork_on sk_cork_on is still incorrect as MSG_MORE do not manipulate CORK value. --- src/microhttpd/mhd_send.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/microhttpd/mhd_send.c b/src/microhttpd/mhd_send.c index fce83cd5..441f7e7d 100644 --- a/src/microhttpd/mhd_send.c +++ b/src/microhttpd/mhd_send.c @@ -395,13 +395,14 @@ MHD_send_on_connection_ (struct MHD_Connection *connection, #endif /* HTTPS_SUPPORT */ { /* plaintext transmission */ + bool new_cork_state; + pre_cork_setsockopt (connection, want_cork); #if HAVE_MSG_MORE ret = send (s, buffer, buffer_size, MSG_NOSIGNAL_OR_ZERO | (want_cork ? MSG_MORE : 0)); - connection->sk_cork_on = want_cork; /* pretend corking happened as requested */ #else ret = send (connection->socket_fd, buffer, @@ -432,8 +433,9 @@ MHD_send_on_connection_ (struct MHD_Connection *connection, else if (buffer_size > (size_t) ret) connection->epoll_state &= ~MHD_EPOLL_STATE_WRITE_READY; #endif /* EPOLL_SUPPORT */ - post_cork_setsockopt (connection, - want_cork ? (buffer_size == (size_t) ret) : false); + new_cork_state = want_cork ? (buffer_size == (size_t) ret) : false; + post_cork_setsockopt (connection, new_cork_state); + connection->sk_cork_on = new_cork_state; } return ret;