[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.
- [libmicrohttpd] branch master updated (5e0c2223 -> 9f4a08a8), gnunet, 2022/10/28
- [libmicrohttpd] 03/15: New values for MHD_ConnectionEventLoopInfo, gnunet, 2022/10/28
- [libmicrohttpd] 12/15: test_head: added check for excess data in reply, gnunet, 2022/10/28
- [libmicrohttpd] 04/15: Added new state for MHD_ConnectionEventLoopInfo,
gnunet <=
- [libmicrohttpd] 14/15: postprocessor.h: fixed typos in doxy, gnunet, 2022/10/28
- [libmicrohttpd] 11/15: testcurl: added test with Content-Length broken value in request, gnunet, 2022/10/28
- [libmicrohttpd] 08/15: Do not send "100 Continue" if part of the request body is already received, gnunet, 2022/10/28
- [libmicrohttpd] 01/15: Added ability to check for MHD debug builds at run-time, gnunet, 2022/10/28
- [libmicrohttpd] 02/15: Added check for hypothetical too large accepted sockets addresses, gnunet, 2022/10/28
- [libmicrohttpd] 13/15: test_head: check libcurl for timeout value, gnunet, 2022/10/28
- [libmicrohttpd] 06/15: Renamed one more connection state for clarity, gnunet, 2022/10/28
- [libmicrohttpd] 05/15: Renamed one state in MHD_ConnectionEventLoopInfo for clarity, gnunet, 2022/10/28
- [libmicrohttpd] 10/15: connection.c: fixed handling of various errors automatically detected by MHD code, gnunet, 2022/10/28
- [libmicrohttpd] 09/15: Reworked partial processing of the upload, gnunet, 2022/10/28