diff options
author | Evgeny Grin (Karlson2k) <k2k@narod.ru> | 2021-11-06 15:08:35 +0300 |
---|---|---|
committer | Evgeny Grin (Karlson2k) <k2k@narod.ru> | 2021-11-06 15:08:35 +0300 |
commit | a507eb93ee1223e29553bffe6822e395297d0d3f (patch) | |
tree | 18845b6eacb8dd6d46dcf05bce5f6c194d859a45 | |
parent | 2c86e6b25f630c84934cead2bb06abd575c2780d (diff) | |
download | libmicrohttpd-a507eb93ee1223e29553bffe6822e395297d0d3f.tar.gz libmicrohttpd-a507eb93ee1223e29553bffe6822e395297d0d3f.zip |
W32 socket pair: set TCP_NODELAY
Set TCP_NODELAY on both ends of socket pair on W32 to disable
unwanted buffering
-rw-r--r-- | src/microhttpd/mhd_sockets.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/microhttpd/mhd_sockets.c b/src/microhttpd/mhd_sockets.c index 0d9826a4..2b8a7f11 100644 --- a/src/microhttpd/mhd_sockets.c +++ b/src/microhttpd/mhd_sockets.c | |||
@@ -323,17 +323,27 @@ MHD_W32_socket_pair_ (SOCKET sockets_pair[2], int non_blk) | |||
323 | if ( (0 == getsockname (client_s, | 323 | if ( (0 == getsockname (client_s, |
324 | (struct sockaddr*) &client_addr, | 324 | (struct sockaddr*) &client_addr, |
325 | &addr_len)) && | 325 | &addr_len)) && |
326 | (accepted_from_addr.sin_family == client_addr.sin_family) && | ||
327 | (accepted_from_addr.sin_port == client_addr.sin_port) && | 326 | (accepted_from_addr.sin_port == client_addr.sin_port) && |
328 | (accepted_from_addr.sin_addr.s_addr == | 327 | (accepted_from_addr.sin_addr.s_addr == |
329 | client_addr.sin_addr.s_addr) && | 328 | client_addr.sin_addr.s_addr) && |
329 | (accepted_from_addr.sin_family == client_addr.sin_family) && | ||
330 | ( (0 != non_blk) ? | 330 | ( (0 != non_blk) ? |
331 | (0 == ioctlsocket (server_s, | 331 | (0 == ioctlsocket (server_s, |
332 | (int) FIONBIO, | 332 | (int) FIONBIO, |
333 | &on_val)) : | 333 | &on_val)) : |
334 | (0 == ioctlsocket (client_s, | 334 | (0 == ioctlsocket (client_s, |
335 | (int) FIONBIO, | 335 | (int) FIONBIO, |
336 | &off_val)) ) ) | 336 | &off_val)) ) && |
337 | (0 == setsockopt (server_s, | ||
338 | IPPROTO_TCP, | ||
339 | TCP_NODELAY, | ||
340 | (const void *) (&on_val), | ||
341 | sizeof (on_val))) && | ||
342 | (0 == setsockopt (client_s, | ||
343 | IPPROTO_TCP, | ||
344 | TCP_NODELAY, | ||
345 | (const void *) (&on_val), | ||
346 | sizeof (on_val))) ) | ||
337 | { | 347 | { |
338 | closesocket (listen_s); | 348 | closesocket (listen_s); |
339 | sockets_pair[0] = server_s; | 349 | sockets_pair[0] = server_s; |