gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r36996 - in libmicrohttpd: . src/microhttpd


From: gnunet
Subject: [GNUnet-SVN] r36996 - in libmicrohttpd: . src/microhttpd
Date: Fri, 8 Apr 2016 20:40:58 +0200

Author: Karlson2k
Date: 2016-04-08 20:40:58 +0200 (Fri, 08 Apr 2016)
New Revision: 36996

Modified:
   libmicrohttpd/ChangeLog
   libmicrohttpd/src/microhttpd/connection.c
   libmicrohttpd/src/microhttpd/daemon.c
Log:
Reworked calling shutdown() on connections:

Now called on all platforms (including W32), called only with SHUT_WR,
except in close_all_connections() where shutdown() called with SHUT_RDWR.
This should increase chances of graceful disconnection.

Modified: libmicrohttpd/ChangeLog
===================================================================
--- libmicrohttpd/ChangeLog     2016-04-08 18:27:52 UTC (rev 36995)
+++ libmicrohttpd/ChangeLog     2016-04-08 18:40:58 UTC (rev 36996)
@@ -1,3 +1,9 @@
+Fri Apr 08 18:32:17 CET 2016
+       Some minor internal fixes, addition error checking and
+       micro optimizations.
+       Reworked usage of sockets shutdown() - now work equally
+       on all platforms, disconnection should be "more graceful". -EG
+
 Tue Mar 15 21:52:27 CET 2016
        Do not crash if pthread_create() fails. -DD
 

Modified: libmicrohttpd/src/microhttpd/connection.c
===================================================================
--- libmicrohttpd/src/microhttpd/connection.c   2016-04-08 18:27:52 UTC (rev 
36995)
+++ libmicrohttpd/src/microhttpd/connection.c   2016-04-08 18:40:58 UTC (rev 
36996)
@@ -479,8 +479,7 @@
 
   daemon = connection->daemon;
   if (0 == (connection->daemon->options & MHD_USE_EPOLL_TURBO))
-    shutdown (connection->socket_fd,
-             (MHD_YES == connection->read_closed) ? SHUT_WR : SHUT_RDWR);
+    shutdown (connection->socket_fd, SHUT_WR);
   connection->state = MHD_CONNECTION_CLOSED;
   connection->event_loop_info = MHD_EVENT_LOOP_INFO_CLEANUP;
   if ( (NULL != daemon->notify_completed) &&

Modified: libmicrohttpd/src/microhttpd/daemon.c
===================================================================
--- libmicrohttpd/src/microhttpd/daemon.c       2016-04-08 18:27:52 UTC (rev 
36995)
+++ libmicrohttpd/src/microhttpd/daemon.c       2016-04-08 18:40:58 UTC (rev 
36996)
@@ -1078,9 +1078,7 @@
                                     MHD_CONNECTION_NOTIFY_CLOSED);
   if (MHD_INVALID_SOCKET != con->socket_fd)
     {
-#ifdef WINDOWS
       shutdown (con->socket_fd, SHUT_WR);
-#endif
       if (0 != MHD_socket_close_ (con->socket_fd))
         MHD_PANIC ("close failed\n");
       con->socket_fd = MHD_INVALID_SOCKET;
@@ -2115,9 +2113,6 @@
        }
       if (MHD_INVALID_SOCKET != pos->socket_fd)
        {
-#ifdef WINDOWS
-         shutdown (pos->socket_fd, SHUT_WR);
-#endif
          if (0 != MHD_socket_close_ (pos->socket_fd))
            MHD_PANIC ("close failed\n");
        }
@@ -3733,11 +3728,6 @@
   daemon->socket_fd = MHD_INVALID_SOCKET;
   daemon->listening_address_reuse = 0;
   daemon->options = flags;
-#if defined(MHD_WINSOCK_SOCKETS) || defined(CYGWIN)
-  /* Winsock is broken with respect to 'shutdown';
-     this disables us calling 'shutdown' on W32. */
-  daemon->options |= MHD_USE_EPOLL_TURBO;
-#endif
   daemon->port = port;
   daemon->apc = apc;
   daemon->apc_cls = apc_cls;
@@ -4451,8 +4441,7 @@
     MHD_PANIC ("MHD_stop_daemon() called while we have suspended 
connections.\n");
   for (pos = daemon->connections_head; NULL != pos; pos = pos->next)
     {
-      shutdown (pos->socket_fd,
-                (MHD_YES == pos->read_closed) ? SHUT_WR : SHUT_RDWR);
+      shutdown (pos->socket_fd, SHUT_RDWR);
 #if MHD_WINSOCK_SOCKETS
       if ( (0 != (daemon->options & MHD_USE_THREAD_PER_CONNECTION)) &&
            (MHD_INVALID_PIPE_ != daemon->wpipe[1]) &&




reply via email to

[Prev in Thread] Current Thread [Next in Thread]