libmicrohttpd

HTTP/1.x server C library (MHD 1.x, stable)
Log | Files | Refs | Submodules | README | LICENSE

commit 4b62caead6edb2d4b75ef1c99e653d4b30ac9007
parent c5081fb276b52fc9d48b9ba441686727eafaaad8
Author: Christian Grothoff <christian@grothoff.org>
Date:   Thu,  1 Aug 2019 20:50:35 +0200

toggle Naggle if and only if corking is not possible by other means

Diffstat:
Msrc/microhttpd/mhd_send.c | 26++++++++++++++++++++++++++
1 file changed, 26 insertions(+), 0 deletions(-)

diff --git a/src/microhttpd/mhd_send.c b/src/microhttpd/mhd_send.c @@ -90,6 +90,19 @@ pre_cork_setsockopt (struct MHD_Connection *connection, /* any others? man page does not list more... */ break; } +#else + /* CORK/NOPUSH/MSG_MORE do not exist on this platform, + so we must toggle Naggle's algorithm on/off instead + (otherwise we keep it always off) */ + if (connection->sk_cork_on == want_cork) + { + /* nothing to do, success! */ + return; + } + if ( (want_cork) && + (0 == MHD_socket_set_nodelay (connection->socket_fd, + false)) ) + connection->sk_cork_on = true; #endif } @@ -148,6 +161,19 @@ post_cork_setsockopt (struct MHD_Connection *connection, /* any others? man page does not list more... */ break; } +#else + /* CORK/NOPUSH/MSG_MORE do not exist on this platform, + so we must toggle Naggle's algorithm on/off instead + (otherwise we keep it always off) */ + if (connection->sk_cork_on == want_cork) + { + /* nothing to do, success! */ + return; + } + if ( (! want_cork) && + (0 == MHD_socket_set_nodelay (connection->socket_fd, + true)) ) + connection->sk_cork_on = false; #endif }