gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] [libmicrohttpd] 01/03: remove dead IN_CLEANUP state, revert


From: gnunet
Subject: [GNUnet-SVN] [libmicrohttpd] 01/03: remove dead IN_CLEANUP state, revert previous patch that called completed callback from wrong thread
Date: Fri, 02 Mar 2018 21:45:31 +0100

This is an automated email from the git hooks/post-receive script.

grothoff pushed a commit to branch master
in repository libmicrohttpd.

commit 71a67ca95997fb2c3a90108a776f61fe1b95e68c
Author: Christian Grothoff <address@hidden>
AuthorDate: Fri Mar 2 20:42:56 2018 +0100

    remove dead IN_CLEANUP state, revert previous patch that called completed 
callback from wrong thread
---
 src/lib/connection_add.c           |  31 +++++-------
 src/lib/connection_call_handlers.c |   6 ---
 src/lib/internal.h                 | 101 ++++++++++++++++++-------------------
 src/lib/request_info.c             |   7 ++-
 src/lib/request_resume.c           |   2 -
 src/microhttpd/connection.c        |   9 +---
 src/microhttpd/daemon.c            |  21 +++-----
 src/microhttpd/internal.h          |   5 --
 8 files changed, 74 insertions(+), 108 deletions(-)

diff --git a/src/lib/connection_add.c b/src/lib/connection_add.c
index 39a61f61..570a6a09 100644
--- a/src/lib/connection_add.c
+++ b/src/lib/connection_add.c
@@ -110,7 +110,7 @@ thread_main_handle_connection (void *data)
   const bool use_poll = false;
 #endif /* ! HAVE_POLL */
   bool was_suspended = false;
-  
+
   MHD_thread_init_(&con->pid);
 
   while ( (! daemon->shutdown) &&
@@ -398,7 +398,7 @@ thread_main_handle_connection (void *data)
         {
           /* Normal HTTP processing is finished,
            * notify application. */
-          if (NULL != con->request.response->termination_cb) 
+          if (NULL != con->request.response->termination_cb)
             con->request.response->termination_cb
              (con->request.response->termination_cb_cls,
               MHD_REQUEST_TERMINATED_COMPLETED_OK,
@@ -419,22 +419,19 @@ thread_main_handle_connection (void *data)
         }
 #endif /* UPGRADE_SUPPORT */
     }
-  if (MHD_REQUEST_IN_CLEANUP != con->request.state)
-    {
 #if DEBUG_CLOSE
 #ifdef HAVE_MESSAGES
-      MHD_DLOG (con->daemon,
-               MHD_SC_THREAD_TERMINATING,
-                _("Processing thread terminating. Closing connection\n"));
+  MHD_DLOG (con->daemon,
+            MHD_SC_THREAD_TERMINATING,
+            _("Processing thread terminating. Closing connection\n"));
 #endif
 #endif
-      if (MHD_REQUEST_CLOSED != con->request.state)
-       MHD_connection_close_ (con,
-                               (daemon->shutdown) ?
-                               MHD_REQUEST_TERMINATED_DAEMON_SHUTDOWN:
-                               MHD_REQUEST_TERMINATED_WITH_ERROR);
-      MHD_request_handle_idle_ (&con->request);
-    }
+  if (MHD_REQUEST_CLOSED != con->request.state)
+    MHD_connection_close_ (con,
+                           (daemon->shutdown) ?
+                           MHD_REQUEST_TERMINATED_DAEMON_SHUTDOWN:
+                           MHD_REQUEST_TERMINATED_WITH_ERROR);
+  MHD_request_handle_idle_ (&con->request);
 exit:
   if (NULL != con->request.response)
     {
@@ -892,7 +889,7 @@ internal_add_connection (struct MHD_Daemon *daemon,
 #endif
     }
   return MHD_SC_OK;
-  
+
  cleanup:
   if (NULL != daemon->notify_connection_cb)
     daemon->notify_connection_cb (daemon->notify_connection_cb_cls,
@@ -908,7 +905,7 @@ internal_add_connection (struct MHD_Daemon *daemon,
                     addr,
                     addrlen);
   MHD_mutex_lock_chk_ (&daemon->cleanup_connection_mutex);
-  if (MHD_TM_THREAD_PER_CONNECTION != daemon->threading_model) 
+  if (MHD_TM_THREAD_PER_CONNECTION != daemon->threading_model)
     {
       XDLL_remove (daemon->normal_timeout_head,
                    daemon->normal_timeout_tail,
@@ -976,7 +973,7 @@ MHD_daemon_add_connection (struct MHD_Daemon *daemon,
     {
       sk_nonbl = true;
     }
-  
+
   if ( (daemon->enable_turbo) &&
        (! MHD_socket_noninheritable_ (client_socket)) )
     {
diff --git a/src/lib/connection_call_handlers.c 
b/src/lib/connection_call_handlers.c
index 22704d1b..f1c31cb6 100644
--- a/src/lib/connection_call_handlers.c
+++ b/src/lib/connection_call_handlers.c
@@ -971,9 +971,6 @@ MHD_request_handle_write_ (struct MHD_Request *request)
       return;
     case MHD_REQUEST_CLOSED:
       return;
-    case MHD_REQUEST_IN_CLEANUP:
-      mhd_assert (0);
-      return;
 #ifdef UPGRADE_SUPPORT
     case MHD_REQUEST_UPGRADE:
       mhd_assert (0);
@@ -3048,9 +3045,6 @@ connection_update_event_loop_info (struct MHD_Connection 
*connection)
         case MHD_REQUEST_CLOSED:
          request->event_loop_info = MHD_EVENT_LOOP_INFO_CLEANUP;
           return;       /* do nothing, not even reading */
-        case MHD_REQUEST_IN_CLEANUP:
-          mhd_assert (0);
-          break;
 #ifdef UPGRADE_SUPPORT
         case MHD_REQUEST_UPGRADE:
           mhd_assert (0);
diff --git a/src/lib/internal.h b/src/lib/internal.h
index 52be90d9..97024683 100644
--- a/src/lib/internal.h
+++ b/src/lib/internal.h
@@ -209,7 +209,7 @@ typedef ssize_t
  * not have to be completed yet).  A transition to
  * #MHD_REQUEST_CLOSED or #MHD_REQUEST_INIT requires the write
  * to be complete.
- */ 
+ */
 enum MHD_REQUEST_STATE // FIXME: fix capitalization!
 {
   /**
@@ -317,11 +317,6 @@ enum MHD_REQUEST_STATE // FIXME: fix capitalization!
    */
   MHD_REQUEST_CLOSED = MHD_REQUEST_FOOTERS_SENT + 1,
 
-  /**
-   * 20: This request is finished (only to be freed)
-   */
-  MHD_REQUEST_IN_CLEANUP = MHD_REQUEST_CLOSED + 1,
-
 #ifdef UPGRADE_SUPPORT
   /**
    * Request was "upgraded" and socket is now under the
@@ -369,7 +364,7 @@ struct MHD_Request
 {
 
   /**
-   * Reference to the `struct MHD_Daemon`.  
+   * Reference to the `struct MHD_Daemon`.
    */
   struct MHD_Daemon *daemon;
 
@@ -383,7 +378,7 @@ struct MHD_Request
    * it is available.
    */
   struct MHD_Response *response;
-  
+
   /**
    * Linked list of parsed headers.
    */
@@ -554,7 +549,7 @@ struct MHD_Request
    * HTTP method, as an enum.
    */
   enum MHD_Method method;
-  
+
   /**
    * What is this request waiting for?
    */
@@ -633,7 +628,7 @@ enum MHD_EpollState
 
 /**
  * State kept per HTTP connection.
- */ 
+ */
 struct MHD_Connection
 {
 
@@ -687,7 +682,7 @@ struct MHD_Connection
    * address (which persists across individual requests).
    */
   struct MemoryPool *pool;
-  
+
   /**
    * We allow the main application to associate some pointer with the
    * TCP connection (which may span multiple HTTP requests).  Here is
@@ -703,7 +698,7 @@ struct MHD_Connection
    */
   struct MHD_TLS_ConnectionState *tls_cs;
 #endif
-  
+
   /**
    * Function used for reading HTTP request stream.
    */
@@ -727,7 +722,7 @@ struct MHD_Connection
   MHD_thread_handle_ID_ pid;
 
   /**
-   * Foreign address (of length @e addr_len). 
+   * Foreign address (of length @e addr_len).
    */
   struct sockaddr_storage addr;
 
@@ -794,7 +789,7 @@ struct MHD_Connection
    * from this socket).
    */
   bool read_closed;
-  
+
 };
 
 
@@ -1013,7 +1008,7 @@ struct MHD_Daemon
    */
   void *rc_cls;
 
-  /** 
+  /**
    * Function to call for logging.
    */
   MHD_LoggingCallback logger;
@@ -1021,7 +1016,7 @@ struct MHD_Daemon
   /**
    * Closure for @e logger.
    */
-  void *logger_cls;  
+  void *logger_cls;
 
   /**
    * Function to call to accept/reject connections based on
@@ -1076,7 +1071,7 @@ struct MHD_Daemon
    */
   struct MHD_Daemon *worker_pool;
 
-  
+
 #if HTTPS_SUPPORT
 #ifdef UPGRADE_SUPPORT
   /**
@@ -1098,7 +1093,7 @@ struct MHD_Daemon
    * Which TLS backend should be used. NULL for no TLS.
    * This is merely the handle to the dlsym() object, not
    * the API.
-   */ 
+   */
   void *tls_backend_lib;
 
   /**
@@ -1152,7 +1147,7 @@ struct MHD_Daemon
    * Not used in MHD_USE_THREAD_PER_CONNECTION mode.
    */
   struct MHD_Connection *manual_timeout_tail;
-  
+
   /**
    * Head of doubly-linked list of our current, active connections.
    */
@@ -1251,8 +1246,8 @@ struct MHD_Daemon
    * The select thread handle (if we have internal select)
    */
   MHD_thread_handle_ID_ pid;
-  
-  /** 
+
+  /**
    * Socket address to bind to for the listen socket.
    */
   struct sockaddr_storage listen_sa;
@@ -1267,8 +1262,8 @@ struct MHD_Daemon
    * "manual_timeout" DLLs.
    */
   MHD_mutex_ cleanup_connection_mutex;
-  
-  /** 
+
+  /**
    * Number of (valid) bytes in @e listen_sa.  Zero
    * if @e listen_sa is not initialized.
    */
@@ -1277,7 +1272,7 @@ struct MHD_Daemon
 /**
  * Default size of the per-connection memory pool.
  */
-#define POOL_SIZE_DEFAULT (32 * 1024) 
+#define POOL_SIZE_DEFAULT (32 * 1024)
   /**
    * Buffer size to use for each connection. Default
    * is #POOL_SIZE_DEFAULT.
@@ -1292,7 +1287,7 @@ struct MHD_Daemon
  * space).
  */
 #define BUF_INC_SIZE_DEFAULT 1024
-  
+
   /**
    * Increment to use when growing the read buffer. Smaller
    * than @e connection_memory_limit_b.
@@ -1306,7 +1301,7 @@ struct MHD_Daemon
   size_t thread_stack_limit_b;
 
 #if ENABLE_DAUTH
-  
+
   /**
    * Size of @e digest_auth_random_buf.
    */
@@ -1316,14 +1311,14 @@ struct MHD_Daemon
    * Default value for @e digest_nc_length.
    */
 #define DIGEST_NC_LENGTH_DEFAULT 4
-  
+
   /**
    * Desired length of the internal array with the nonce and
    * nonce counters for digest authentication.
    */
   size_t digest_nc_length;
 #endif
-  
+
   /**
    * Default value we use for the listen backlog.
    */
@@ -1332,13 +1327,13 @@ struct MHD_Daemon
 #else  /* !SOMAXCONN */
 #define LISTEN_BACKLOG_DEFAULT 511
 #endif
-  
+
   /**
-   * Backlog argument to use for listen.  See 
+   * Backlog argument to use for listen.  See
    * #MHD_daemon_listen_backlog().
    */
   int listen_backlog;
-  
+
   /**
    * Default queue length to use with fast open.
    */
@@ -1373,8 +1368,8 @@ struct MHD_Daemon
    * Default timeout in seconds for idle connections.
    */
   time_t connection_default_timeout;
-  
-  /** 
+
+  /**
    * Listen socket we should use, MHD_INVALID_SOCKET means
    * we are to initialize the socket from the other options given.
    */
@@ -1407,23 +1402,23 @@ struct MHD_Daemon
 #endif /* HTTPS_SUPPORT && UPGRADE_SUPPORT */
 
 #endif
-  
+
   /**
    * Inter-thread communication channel.
    */
   struct MHD_itc_ itc;
-  
+
   /**
    * Which threading model do we use? Postive
    * numbers indicate the number of worker threads to be used.
    * Values larger than 1 imply a thread pool.
    */
   enum MHD_ThreadingModel threading_model;
-  
+
   /**
-   * When should we use TCP_FASTOPEN? 
+   * When should we use TCP_FASTOPEN?
    * See #MHD_daemon_tcp_fastopen().
-   */ 
+   */
   enum MHD_FastOpenMethod fast_open_method;
 
   /**
@@ -1445,36 +1440,36 @@ struct MHD_Daemon
    */
   enum MHD_ProtocolStrictLevel protocol_strict_level;
 
-  /** 
+  /**
    * On which port should we listen on? Only effective if we were not
    * given a listen socket or a full address via
    * #MHD_daemon_bind_sa().  0 means to bind to random free port.
    */
   uint16_t listen_port;
-  
+
   /**
    * Suppress generating the "Date:" header, this system
    * lacks an RTC (or developer is hyper-optimizing).  See
    * #MHD_daemon_suppress_date_no_clock().
-   */ 
+   */
   bool suppress_date;
 
   /**
    * The use of the inter-thread communication channel is disabled.
    * See #MHD_daemon_disable_itc().
-   */ 
+   */
   bool disable_itc;
 
   /**
    * Disable #MHD_action_suspend() functionality.  See
    * #MHD_daemon_disallow_suspend_resume().
-   */ 
+   */
   bool disallow_suspend_resume;
 
   /**
    * Disable #MHD_action_upgrade() functionality.  See
    * #MHD_daemon_disallow_upgrade().
-   */ 
+   */
   bool disallow_upgrade;
 
   /**
@@ -1523,12 +1518,12 @@ struct MHD_Daemon
    * MHD should speak SHOUTcast instead of HTTP.
    */
   bool enable_shoutcast;
-  
+
   /**
    * Are we shutting down?
    */
   volatile bool shutdown;
-  
+
 };
 
 
@@ -1559,9 +1554,9 @@ struct MHD_Action
 
   /**
    * Closure for @a action
-   */ 
+   */
   void *action_cls;
-  
+
 };
 
 
@@ -1577,7 +1572,7 @@ struct MHD_Response
    * must be the first field in a response!
    */
   struct MHD_Action action;
-  
+
   /**
    * Headers to send for the response.  Initially
    * the linked list is created in inverse order;
@@ -1610,7 +1605,7 @@ struct MHD_Response
   MHD_ContentReaderFreeCallback crfc;
 
   /**
-   * Function to call once MHD is finished with 
+   * Function to call once MHD is finished with
    * the request, may be NULL.
    */
   MHD_RequestTerminationCallback termination_cb;
@@ -1619,7 +1614,7 @@ struct MHD_Response
    * Closure for @e termination_cb.
    */
   void *termination_cb_cls;
-  
+
 #ifdef UPGRADE_SUPPORT
   /**
    * Application function to call once we are done sending the headers
@@ -1671,7 +1666,7 @@ struct MHD_Response
    * HTTP status code of the response.
    */
   enum MHD_HTTP_StatusCode status_code;
-  
+
   /**
    * Reference count for this response.  Free once the counter hits
    * zero.
@@ -1692,7 +1687,7 @@ struct MHD_Response
    * Use ShoutCAST format.
    */
   bool icy;
-  
+
 };
 
 
diff --git a/src/lib/request_info.c b/src/lib/request_info.c
index a7342e0a..5f481d98 100644
--- a/src/lib/request_info.c
+++ b/src/lib/request_info.c
@@ -48,7 +48,7 @@ MHD_request_get_information_sz (struct MHD_Request *request,
 {
 #define CHECK_SIZE(type) if (sizeof(type) < return_value_size) \
     return MHD_NO
-  
+
   switch (info_type)
   {
   case MHD_REQUEST_INFORMATION_CONNECTION:
@@ -70,8 +70,7 @@ MHD_request_get_information_sz (struct MHD_Request *request,
   case MHD_REQUEST_INFORMATION_HEADER_SIZE:
     CHECK_SIZE (size_t);
     if ( (MHD_REQUEST_HEADERS_RECEIVED > request->state) ||
-        (MHD_REQUEST_CLOSED == request->state) ||
-           (MHD_REQUEST_IN_CLEANUP == request->state) )
+        (MHD_REQUEST_CLOSED == request->state) )
         return MHD_NO; /* invalid, too early! */
     return_value->header_size = request->header_size;
     return MHD_YES;
@@ -79,7 +78,7 @@ MHD_request_get_information_sz (struct MHD_Request *request,
   default:
     return MHD_NO;
   }
-  
+
 #undef CHECK_SIZE
 }
 
diff --git a/src/lib/request_resume.c b/src/lib/request_resume.c
index 5742f6ac..b4bd651e 100644
--- a/src/lib/request_resume.c
+++ b/src/lib/request_resume.c
@@ -159,8 +159,6 @@ MHD_resume_suspended_connections_ (struct MHD_Daemon 
*daemon)
           /* Data forwarding was finished (for TLS connections) AND
            * application was closed upgraded connection.
            * Insert connection into cleanup list. */
-          MHD_connection_close_ (pos,
-                                 MHD_CONNECTION_NOTIFY_CLOSED);
           DLL_insert (daemon->cleanup_head,
                       daemon->cleanup_tail,
                       pos);
diff --git a/src/microhttpd/connection.c b/src/microhttpd/connection.c
index 691aa427..d8d12c70 100644
--- a/src/microhttpd/connection.c
+++ b/src/microhttpd/connection.c
@@ -1948,9 +1948,6 @@ MHD_connection_update_event_loop_info (struct 
MHD_Connection *connection)
         case MHD_CONNECTION_CLOSED:
          connection->event_loop_info = MHD_EVENT_LOOP_INFO_CLEANUP;
           return;       /* do nothing, not even reading */
-        case MHD_CONNECTION_IN_CLEANUP:
-          mhd_assert (0);
-          break;
 #ifdef UPGRADE_SUPPORT
         case MHD_CONNECTION_UPGRADE:
           mhd_assert (0);
@@ -3151,9 +3148,6 @@ MHD_connection_handle_write (struct MHD_Connection 
*connection)
       return;
     case MHD_CONNECTION_CLOSED:
       return;
-    case MHD_CONNECTION_IN_CLEANUP:
-      mhd_assert (0);
-      return;
 #ifdef UPGRADE_SUPPORT
     case MHD_CONNECTION_UPGRADE:
       mhd_assert (0);
@@ -3857,8 +3851,7 @@ MHD_get_connection_info (struct MHD_Connection 
*connection,
       return (const union MHD_ConnectionInfo *) 
&connection->connection_timeout_dummy;
     case MHD_CONNECTION_INFO_REQUEST_HEADER_SIZE:
       if ( (MHD_CONNECTION_HEADERS_RECEIVED > connection->state) ||
-           (MHD_CONNECTION_CLOSED == connection->state) ||
-           (MHD_CONNECTION_IN_CLEANUP == connection->state) )
+           (MHD_CONNECTION_CLOSED == connection->state) )
         return NULL; /* invalid, too early! */
       return (const union MHD_ConnectionInfo *) &connection->header_size;
     default:
diff --git a/src/microhttpd/daemon.c b/src/microhttpd/daemon.c
index 14cc0121..24fbe082 100644
--- a/src/microhttpd/daemon.c
+++ b/src/microhttpd/daemon.c
@@ -2066,21 +2066,18 @@ thread_main_handle_connection (void *data)
         }
 #endif /* UPGRADE_SUPPORT */
     }
-  if (MHD_CONNECTION_IN_CLEANUP != con->state)
-    {
 #if DEBUG_CLOSE
 #ifdef HAVE_MESSAGES
-      MHD_DLOG (con->daemon,
-                _("Processing thread terminating. Closing connection\n"));
+  MHD_DLOG (con->daemon,
+            _("Processing thread terminating. Closing connection\n"));
 #endif
 #endif
-      if (MHD_CONNECTION_CLOSED != con->state)
-       MHD_connection_close_ (con,
-                               (daemon->shutdown) ?
-                               MHD_REQUEST_TERMINATED_DAEMON_SHUTDOWN:
-                               MHD_REQUEST_TERMINATED_WITH_ERROR);
-      MHD_connection_handle_idle (con);
-    }
+  if (MHD_CONNECTION_CLOSED != con->state)
+    MHD_connection_close_ (con,
+                           (daemon->shutdown) ?
+                           MHD_REQUEST_TERMINATED_DAEMON_SHUTDOWN:
+                           MHD_REQUEST_TERMINATED_WITH_ERROR);
+  MHD_connection_handle_idle (con);
 exit:
   if (NULL != con->response)
     {
@@ -2790,8 +2787,6 @@ resume_suspended_connections (struct MHD_Daemon *daemon)
           /* Data forwarding was finished (for TLS connections) AND
            * application was closed upgraded connection.
            * Insert connection into cleanup list. */
-          MHD_connection_close_ (pos,
-                                 MHD_REQUEST_TERMINATED_COMPLETED_OK);
           DLL_insert (daemon->cleanup_head,
                       daemon->cleanup_tail,
                       pos);
diff --git a/src/microhttpd/internal.h b/src/microhttpd/internal.h
index 5668a8f8..01f2dbea 100644
--- a/src/microhttpd/internal.h
+++ b/src/microhttpd/internal.h
@@ -507,11 +507,6 @@ enum MHD_CONNECTION_STATE
    */
   MHD_CONNECTION_CLOSED = MHD_CONNECTION_FOOTERS_SENT + 1,
 
-  /**
-   * 20: This connection is finished (only to be freed)
-   */
-  MHD_CONNECTION_IN_CLEANUP = MHD_CONNECTION_CLOSED + 1,
-
 #ifdef UPGRADE_SUPPORT
   /**
    * Connection was "upgraded" and socket is now under the

-- 
To stop receiving notification emails like this one, please contact
address@hidden



reply via email to

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