gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] [libmicrohttpd] branch master updated: upgraded connections


From: gnunet
Subject: [GNUnet-SVN] [libmicrohttpd] branch master updated: upgraded connections: removed redundant states and checks and unified processing logic. Fixed early close in TLS thread-per-connection mode.
Date: Wed, 15 Mar 2017 16:20:52 +0100

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

karlson2k pushed a commit to branch master
in repository libmicrohttpd.

The following commit(s) were added to refs/heads/master by this push:
     new 4b6e4c63 upgraded connections: removed redundant states and checks and 
unified processing logic. Fixed early close in TLS thread-per-connection mode.
4b6e4c63 is described below

commit 4b6e4c630dc6027ee5046d3c558864d94c6758c7
Author: Evgeny Grin (Karlson2k) <address@hidden>
AuthorDate: Wed Mar 15 18:15:02 2017 +0300

    upgraded connections: removed redundant states and checks and unified 
processing logic.
    Fixed early close in TLS thread-per-connection mode.
---
 src/microhttpd/connection.c |  6 ------
 src/microhttpd/daemon.c     | 24 +++++++-----------------
 src/microhttpd/internal.h   |  7 -------
 src/microhttpd/response.c   |  3 +--
 4 files changed, 8 insertions(+), 32 deletions(-)

diff --git a/src/microhttpd/connection.c b/src/microhttpd/connection.c
index f192a1bb..7380c662 100644
--- a/src/microhttpd/connection.c
+++ b/src/microhttpd/connection.c
@@ -2446,8 +2446,6 @@ MHD_connection_handle_read (struct MHD_Connection 
*connection)
         case MHD_CONNECTION_UPGRADE:
           EXTRA_CHECK (0);
           break;
-        case MHD_CONNECTION_UPGRADE_CLOSED:
-          break;
 #endif /* UPGRADE_SUPPORT */
         default:
           /* shrink read buffer to how much is actually used */
@@ -2635,8 +2633,6 @@ MHD_connection_handle_write (struct MHD_Connection 
*connection)
         case MHD_CONNECTION_UPGRADE:
           EXTRA_CHECK (0);
           break;
-        case MHD_CONNECTION_UPGRADE_CLOSED:
-          break;
 #endif /* UPGRADE_SUPPORT */
         default:
           EXTRA_CHECK (0);
@@ -3202,8 +3198,6 @@ MHD_connection_handle_idle (struct MHD_Connection 
*connection)
 #ifdef UPGRADE_SUPPORT
        case MHD_CONNECTION_UPGRADE:
           return MHD_YES; /* keep open */
-        case MHD_CONNECTION_UPGRADE_CLOSED:
-          return MHD_YES; /* "Upgraded" connection should be closed in special 
way. */
 #endif /* UPGRADE_SUPPORT */
        default:
           EXTRA_CHECK (0);
diff --git a/src/microhttpd/daemon.c b/src/microhttpd/daemon.c
index 6f0fe9f2..84d9afe3 100644
--- a/src/microhttpd/daemon.c
+++ b/src/microhttpd/daemon.c
@@ -1620,7 +1620,9 @@ thread_main_connection_upgrade (struct MHD_Connection 
*con)
   if ( (0 != (daemon->options & MHD_USE_TLS)) &&
       (0 == (daemon->options & MHD_USE_POLL)))
     {
-      while ( (MHD_CONNECTION_UPGRADE == con->state) ||
+      while ( (0 != urh->in_buffer_size) ||
+              (0 != urh->out_buffer_size) ||
+              (0 != urh->in_buffer_used) ||
               (0 != urh->out_buffer_used) )
         {
           /* use select */
@@ -1690,11 +1692,6 @@ thread_main_connection_upgrade (struct MHD_Connection 
*con)
                           &ws,
                           &es);
           process_urh (urh);
-          if ( (0 == urh->in_buffer_size) &&
-               (0 == urh->out_buffer_size) &&
-               (0 == urh->in_buffer_used) &&
-               (0 == urh->out_buffer_used) )
-            break; /* connections died, we have no more purpose here */
         }
     }
 #ifdef HAVE_POLL
@@ -1708,7 +1705,9 @@ thread_main_connection_upgrade (struct MHD_Connection 
*con)
       p[0].fd = urh->connection->socket_fd;
       p[1].fd = urh->mhd.socket;
 
-      while ( (MHD_CONNECTION_UPGRADE == con->state) ||
+      while ( (0 != urh->in_buffer_size) ||
+              (0 != urh->out_buffer_size) ||
+              (0 != urh->in_buffer_used) ||
               (0 != urh->out_buffer_used) )
         {
           int timeout;
@@ -1738,11 +1737,6 @@ thread_main_connection_upgrade (struct MHD_Connection 
*con)
             }
           urh_from_pollfd(urh, p);
           process_urh (urh);
-          if ( (0 == urh->in_buffer_size) &&
-               (0 == urh->out_buffer_size) &&
-               (0 == urh->in_buffer_used) &&
-               (0 == urh->out_buffer_used) )
-            break; /* connections died, we have no more purpose here */
         }
     }
   /* end POLL */
@@ -2070,11 +2064,7 @@ thread_main_handle_connection (void *data)
        }
 #endif
 #ifdef UPGRADE_SUPPORT
-      /* Check for 'MHD_CONNECTION_UPGRADE_CLOSED' too:
-       * application can finish with "upgraded" connection
-       * before this thread process it for the first time. */
-      if ( (MHD_CONNECTION_UPGRADE == con->state) ||
-           (MHD_CONNECTION_UPGRADE_CLOSED == con->state) )
+      if (MHD_CONNECTION_UPGRADE == con->state)
         {
           /* Normal HTTP processing is finished,
            * notify application. */
diff --git a/src/microhttpd/internal.h b/src/microhttpd/internal.h
index 62c60a31..f9172372 100644
--- a/src/microhttpd/internal.h
+++ b/src/microhttpd/internal.h
@@ -514,13 +514,6 @@ enum MHD_CONNECTION_STATE
    * control of the application.
    */
   MHD_CONNECTION_UPGRADE = MHD_TLS_CONNECTION_INIT + 1,
-
-  /**
-   * Connection was "upgraded" and subsequently closed
-   * by the application.  We now need to do our own
-   * internal cleanup.
-   */
-  MHD_CONNECTION_UPGRADE_CLOSED = MHD_CONNECTION_UPGRADE + 1
 #endif /* UPGRADE_SUPPORT */
 
 };
diff --git a/src/microhttpd/response.c b/src/microhttpd/response.c
index 26ad649b..9004013f 100644
--- a/src/microhttpd/response.c
+++ b/src/microhttpd/response.c
@@ -678,9 +678,8 @@ MHD_upgrade_action (struct MHD_UpgradeResponseHandle *urh,
                   SHUT_RDWR);
       }
 #endif /* HTTPS_SUPPORT */
-    urh->was_closed = true;
     EXTRA_CHECK (MHD_CONNECTION_UPGRADE == connection->state);
-    connection->state = MHD_CONNECTION_UPGRADE_CLOSED;
+    urh->was_closed = true;
     /* As soon as connection will be marked with BOTH
      * 'urh->was_closed' AND 'urh->clean_ready', it will
      * be moved to cleanup list by MHD_resume_connection(). */

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



reply via email to

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