summaryrefslogtreecommitdiff
path: root/src/microhttpd/mhd_send.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/microhttpd/mhd_send.c')
-rw-r--r--src/microhttpd/mhd_send.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/microhttpd/mhd_send.c b/src/microhttpd/mhd_send.c
index 9b07115c..5fed8767 100644
--- 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
}