gnunet-svn
[Top][All Lists]
Advanced

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

[libmicrohttpd] 04/15: Added new state for MHD_ConnectionEventLoopInfo


From: gnunet
Subject: [libmicrohttpd] 04/15: Added new state for MHD_ConnectionEventLoopInfo
Date: Fri, 28 Oct 2022 11:21:53 +0200

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

karlson2k pushed a commit to branch master
in repository libmicrohttpd.

commit 699b6cd5636ef7ce2e41b42301fc1b56f9a02f8e
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
AuthorDate: Thu Oct 20 19:21:52 2022 +0300

    Added new state for MHD_ConnectionEventLoopInfo
---
 src/microhttpd/connection.c |  2 +-
 src/microhttpd/daemon.c     | 24 ++++++++++++++----------
 src/microhttpd/internal.h   |  7 +++++++
 3 files changed, 22 insertions(+), 11 deletions(-)

diff --git a/src/microhttpd/connection.c b/src/microhttpd/connection.c
index 2056fe3d..3cc4fe00 100644
--- a/src/microhttpd/connection.c
+++ b/src/microhttpd/connection.c
@@ -5278,7 +5278,7 @@ MHD_connection_epoll_update_ (struct MHD_Connection 
*connection)
        (0 == (connection->epoll_state & MHD_EPOLL_STATE_SUSPENDED)) &&
        ( ( (MHD_EVENT_LOOP_INFO_WRITE == connection->event_loop_info) &&
            (0 == (connection->epoll_state & MHD_EPOLL_STATE_WRITE_READY))) ||
-         ( (MHD_EVENT_LOOP_INFO_READ == connection->event_loop_info) &&
+         ( (0 != (MHD_EVENT_LOOP_INFO_READ & connection->event_loop_info)) &&
            (0 == (connection->epoll_state & MHD_EPOLL_STATE_READ_READY)) ) ) )
   {
     /* add to epoll set */
diff --git a/src/microhttpd/daemon.c b/src/microhttpd/daemon.c
index 59a7d7e1..fd40b341 100644
--- a/src/microhttpd/daemon.c
+++ b/src/microhttpd/daemon.c
@@ -985,6 +985,7 @@ internal_get_fdset2 (struct MHD_Daemon *daemon,
     switch (pos->event_loop_info)
     {
     case MHD_EVENT_LOOP_INFO_READ:
+    case MHD_EVENT_LOOP_INFO_PROCESS_READ:
       if (! MHD_add_to_fd_set_ (pos->socket_fd,
                                 read_fd_set,
                                 max_fd,
@@ -1181,7 +1182,7 @@ call_handlers (struct MHD_Connection *con,
   if (con->tls_read_ready)
     read_ready = true;
 #endif /* HTTPS_SUPPORT */
-  if ( (MHD_EVENT_LOOP_INFO_READ == con->event_loop_info) &&
+  if ( (0 != (MHD_EVENT_LOOP_INFO_READ & con->event_loop_info)) &&
        (read_ready || (force_close && con->sk_nonblck)) )
   {
     MHD_connection_handle_read (con, force_close);
@@ -1255,11 +1256,11 @@ call_handlers (struct MHD_Connection *con,
   if ( (! con->daemon->data_already_pending) &&
        (0 == (con->daemon->options & MHD_USE_THREAD_PER_CONNECTION)) )
   {
-    if (MHD_EVENT_LOOP_INFO_BLOCK == con->event_loop_info)
+    if (0 != (MHD_EVENT_LOOP_INFO_BLOCK & con->event_loop_info))
       con->daemon->data_already_pending = true;
 #ifdef HTTPS_SUPPORT
     else if ( (con->tls_read_ready) &&
-              (MHD_EVENT_LOOP_INFO_READ == con->event_loop_info) )
+              (0 != (MHD_EVENT_LOOP_INFO_READ & con->event_loop_info)) )
       con->daemon->data_already_pending = true;
 #endif /* HTTPS_SUPPORT */
   }
@@ -1985,13 +1986,13 @@ thread_main_handle_connection (void *data)
       was_suspended = false;
     }
 
-    use_zero_timeout = ( (MHD_EVENT_LOOP_INFO_BLOCK == con->event_loop_info)
+    use_zero_timeout =
+      (0 != (MHD_EVENT_LOOP_INFO_BLOCK & con->event_loop_info)
 #ifdef HTTPS_SUPPORT
-                         || ( (con->tls_read_ready) && \
-                              (MHD_EVENT_LOOP_INFO_READ ==
-                               con->event_loop_info) )
+       || ( (con->tls_read_ready) &&
+            (0 != (MHD_EVENT_LOOP_INFO_READ & con->event_loop_info)) )
 #endif /* HTTPS_SUPPORT */
-                         );
+      );
     if (! use_poll)
     {
       /* use select */
@@ -2027,6 +2028,7 @@ thread_main_handle_connection (void *data)
       switch (con->event_loop_info)
       {
       case MHD_EVENT_LOOP_INFO_READ:
+      case MHD_EVENT_LOOP_INFO_PROCESS_READ:
         if (! MHD_add_to_fd_set_ (con->socket_fd,
                                   &rs,
                                   &maxsock,
@@ -2133,6 +2135,7 @@ thread_main_handle_connection (void *data)
       switch (con->event_loop_info)
       {
       case MHD_EVENT_LOOP_INFO_READ:
+      case MHD_EVENT_LOOP_INFO_PROCESS_READ:
         p[0].events |= POLLIN | MHD_POLL_EVENTS_ERR_DISC;
         break;
       case MHD_EVENT_LOOP_INFO_WRITE:
@@ -4750,6 +4753,7 @@ MHD_poll_all (struct MHD_Daemon *daemon,
       switch (pos->event_loop_info)
       {
       case MHD_EVENT_LOOP_INFO_READ:
+      case MHD_EVENT_LOOP_INFO_PROCESS_READ:
         p[poll_server + i].events |= POLLIN | MHD_POLL_EVENTS_ERR_DISC;
         break;
       case MHD_EVENT_LOOP_INFO_WRITE:
@@ -5362,7 +5366,7 @@ MHD_epoll (struct MHD_Daemon *daemon,
         if (0 != (events[i].events & EPOLLIN))
         {
           pos->epoll_state |= MHD_EPOLL_STATE_READ_READY;
-          if ( ( (MHD_EVENT_LOOP_INFO_READ == pos->event_loop_info) ||
+          if ( ( (0 != (MHD_EVENT_LOOP_INFO_READ & pos->event_loop_info)) ||
                  (pos->read_buffer_size > pos->read_buffer_offset) ) &&
                (0 == (pos->epoll_state & MHD_EPOLL_STATE_IN_EREADY_EDLL) ) )
           {
@@ -5452,7 +5456,7 @@ MHD_epoll (struct MHD_Daemon *daemon,
         (pos->epoll_state & (MHD_EPOLL_STATE_SUSPENDED
                              | MHD_EPOLL_STATE_IN_EREADY_EDLL)))
     {
-      if ( ((MHD_EVENT_LOOP_INFO_READ == pos->event_loop_info) &&
+      if ( ((0 != (MHD_EVENT_LOOP_INFO_READ & pos->event_loop_info)) &&
             (0 == (pos->epoll_state & MHD_EPOLL_STATE_READ_READY)) ) ||
            ((MHD_EVENT_LOOP_INFO_WRITE == pos->event_loop_info) &&
             (0 == (pos->epoll_state & MHD_EPOLL_STATE_WRITE_READY)) ) ||
diff --git a/src/microhttpd/internal.h b/src/microhttpd/internal.h
index 6a94faea..89a68772 100644
--- a/src/microhttpd/internal.h
+++ b/src/microhttpd/internal.h
@@ -226,6 +226,13 @@ enum MHD_ConnectionEventLoopInfo
    */
   MHD_EVENT_LOOP_INFO_BLOCK = 1 << 2,
 
+  /**
+   * Some data is ready to be processed, but more data could
+   * be read.
+   */
+  MHD_EVENT_LOOP_INFO_PROCESS_READ =
+    MHD_EVENT_LOOP_INFO_READ | MHD_EVENT_LOOP_INFO_BLOCK,
+
   /**
    * We are finished and are awaiting cleanup.
    */

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

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