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:
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
}