libmicrohttpd

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

commit 282386193c63b9c02d7e7201d06b7fc19c2708d4
parent 326441639c0b3eb3c84d1b3368e1e12b4aba75e7
Author: Christian Grothoff <christian@grothoff.org>
Date:   Sun, 14 Jul 2013 17:59:09 +0000

eliminate shutdown calls that are not required, strictly speaking

Diffstat:
MChangeLog | 6++++++
Msrc/microhttpd/connection.c | 4+++-
Msrc/microhttpd/daemon.c | 10----------
3 files changed, 9 insertions(+), 11 deletions(-)

diff --git a/ChangeLog b/ChangeLog @@ -1,3 +1,9 @@ +Sun Jul 14 19:57:56 CEST 2013 + Removing 'shutdown' calls that happen just before close or + that are for read-only and for a client that has already + stopped sending anyway (thus reducing number of system calls + slightly). -CG + Sun Jul 14 19:37:37 CEST 2013 Name MHD worker threads on glibc >= 2.12. -,L4X[o](B diff --git a/src/microhttpd/connection.c b/src/microhttpd/connection.c @@ -1504,7 +1504,9 @@ do_read (struct MHD_Connection *connection) { /* other side closed connection */ connection->read_closed = MHD_YES; - SHUTDOWN (connection->socket_fd, SHUT_RD); + /* shutdown is not required here, as the other side already + knows; so flagging this internally should suffice */ + /* SHUTDOWN (connection->socket_fd, SHUT_RD); */ return MHD_YES; } connection->read_buffer_offset += bytes_read; diff --git a/src/microhttpd/daemon.c b/src/microhttpd/daemon.c @@ -1002,7 +1002,6 @@ MHD_add_connection (struct MHD_Daemon *daemon, client_socket, addr, addrlen); /* all pools are at their connection limit, must refuse */ - SHUTDOWN (client_socket, SHUT_RDWR); if (0 != CLOSE (client_socket)) MHD_PANIC ("close failed\n"); return MHD_NO; @@ -1018,7 +1017,6 @@ MHD_add_connection (struct MHD_Daemon *daemon, client_socket, FD_SETSIZE); #endif - SHUTDOWN (client_socket, SHUT_RDWR); if (0 != CLOSE (client_socket)) MHD_PANIC ("close failed\n"); return MHD_NO; @@ -1039,7 +1037,6 @@ MHD_add_connection (struct MHD_Daemon *daemon, MHD_DLOG (daemon, "Server reached connection limit (closing inbound connection)\n"); #endif - SHUTDOWN (client_socket, SHUT_RDWR); if (0 != CLOSE (client_socket)) MHD_PANIC ("close failed\n"); return MHD_NO; @@ -1055,7 +1052,6 @@ MHD_add_connection (struct MHD_Daemon *daemon, MHD_DLOG (daemon, "Connection rejected, closing connection\n"); #endif #endif - SHUTDOWN (client_socket, SHUT_RDWR); if (0 != CLOSE (client_socket)) MHD_PANIC ("close failed\n"); MHD_ip_limit_del (daemon, addr, addrlen); @@ -1079,7 +1075,6 @@ MHD_add_connection (struct MHD_Daemon *daemon, "Error allocating memory: %s\n", STRERROR (errno)); #endif - SHUTDOWN (client_socket, SHUT_RDWR); if (0 != CLOSE (client_socket)) MHD_PANIC ("close failed\n"); MHD_ip_limit_del (daemon, addr, addrlen); @@ -1094,7 +1089,6 @@ MHD_add_connection (struct MHD_Daemon *daemon, "Error allocating memory: %s\n", STRERROR (errno)); #endif - SHUTDOWN (client_socket, SHUT_RDWR); if (0 != CLOSE (client_socket)) MHD_PANIC ("close failed\n"); MHD_ip_limit_del (daemon, addr, addrlen); @@ -1110,7 +1104,6 @@ MHD_add_connection (struct MHD_Daemon *daemon, "Error allocating memory: %s\n", STRERROR (errno)); #endif - SHUTDOWN (client_socket, SHUT_RDWR); if (0 != CLOSE (client_socket)) MHD_PANIC ("close failed\n"); MHD_ip_limit_del (daemon, addr, addrlen); @@ -1184,7 +1177,6 @@ MHD_add_connection (struct MHD_Daemon *daemon, "Failed to setup TLS credentials: unknown credential type %d\n", daemon->cred_type); #endif - SHUTDOWN (client_socket, SHUT_RDWR); if (0 != CLOSE (client_socket)) MHD_PANIC ("close failed\n"); MHD_ip_limit_del (daemon, addr, addrlen); @@ -1261,7 +1253,6 @@ MHD_add_connection (struct MHD_Daemon *daemon, return MHD_YES; #if HTTPS_SUPPORT || EPOLL_SUPPORT cleanup: - SHUTDOWN (client_socket, SHUT_RDWR); if (0 != CLOSE (client_socket)) MHD_PANIC ("close failed\n"); MHD_ip_limit_del (daemon, addr, addrlen); @@ -1330,7 +1321,6 @@ MHD_accept_connection (struct MHD_Daemon *daemon) #endif if (-1 != s) { - SHUTDOWN (s, SHUT_RDWR); if (0 != CLOSE (s)) MHD_PANIC ("close failed\n"); /* just in case */