[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] [libmicrohttpd] 06/09: internal_add_connection(): improved
From: |
gnunet |
Subject: |
[GNUnet-SVN] [libmicrohttpd] 06/09: internal_add_connection(): improved thread safety in epoll mode with 'external' add |
Date: |
Sun, 04 Jun 2017 14:08:04 +0200 |
This is an automated email from the git hooks/post-receive script.
karlson2k pushed a commit to branch master
in repository libmicrohttpd.
commit 5c28c2ffcbd886b6dda0dae480cd459890f76cb1
Author: Evgeny Grin (Karlson2k) <address@hidden>
AuthorDate: Sun Jun 4 14:26:46 2017 +0300
internal_add_connection(): improved thread safety in epoll mode with
'external' add
---
src/microhttpd/daemon.c | 25 +++++++++++++------------
1 file changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/microhttpd/daemon.c b/src/microhttpd/daemon.c
index 01306045..8e11b4c0 100644
--- a/src/microhttpd/daemon.c
+++ b/src/microhttpd/daemon.c
@@ -2625,21 +2625,11 @@ internal_add_connection (struct MHD_Daemon *daemon,
goto cleanup;
}
}
- else
- if ( (external_add) &&
- (MHD_ITC_IS_VALID_(daemon->itc)) &&
- (! MHD_itc_activate_ (daemon->itc, "n")) )
- {
-#ifdef HAVE_MESSAGES
- MHD_DLOG (daemon,
- _("Failed to signal new connection via inter-thread
communication channel."));
-#endif
- }
#ifdef EPOLL_SUPPORT
if (0 != (daemon->options & MHD_USE_EPOLL))
{
- if (0 == (daemon->options & MHD_USE_TURBO))
- {
+ if ((0 == (daemon->options & MHD_USE_TURBO)) || (external_add))
+ { /* Do not manipulate EReady DL-list in 'external_add' mode. */
struct epoll_event event;
event.events = EPOLLIN | EPOLLOUT | EPOLLPRI | EPOLLET;
@@ -2668,7 +2658,18 @@ internal_add_connection (struct MHD_Daemon *daemon,
connection);
}
}
+ else /* This 'else' is combined with next 'if'. */
#endif
+ if ( (0 == (daemon->options & MHD_USE_THREAD_PER_CONNECTION)) &&
+ (external_add) &&
+ (MHD_ITC_IS_VALID_(daemon->itc)) &&
+ (! MHD_itc_activate_ (daemon->itc, "n")) )
+ {
+#ifdef HAVE_MESSAGES
+ MHD_DLOG (daemon,
+ _("Failed to signal new connection via inter-thread
communication channel."));
+#endif
+ }
daemon->connections++;
return MHD_YES;
cleanup:
--
To stop receiving notification emails like this one, please contact
address@hidden
- [GNUnet-SVN] [libmicrohttpd] branch master updated (51b64e8b -> b7844230), gnunet, 2017/06/04
- [GNUnet-SVN] [libmicrohttpd] 05/09: internal_add_connection(): added missing TLS session deinit in case of failure, gnunet, 2017/06/04
- [GNUnet-SVN] [libmicrohttpd] 01/09: internal_add_connection(): change one parameter type to 'bool', gnunet, 2017/06/04
- [GNUnet-SVN] [libmicrohttpd] 04/09: MHD_cleanup_connections(): improved thread safety, gnunet, 2017/06/04
- [GNUnet-SVN] [libmicrohttpd] 02/09: internal_add_connection(): cosmetics, gnunet, 2017/06/04
- [GNUnet-SVN] [libmicrohttpd] 08/09: internal_add_connection(): check for connections limit in thread-safe way, thus allowing to really use MHD_add_connection() with 'internal' polling mode, gnunet, 2017/06/04
- [GNUnet-SVN] [libmicrohttpd] 07/09: internal_add_connection(): cosmetics, gnunet, 2017/06/04
- [GNUnet-SVN] [libmicrohttpd] 09/09: MHD_add_connection(): updated doxy to reflect that per-IP-limit actually is NOT ignored. Skipping of per-IP-limit could be easily implemented by request., gnunet, 2017/06/04
- [GNUnet-SVN] [libmicrohttpd] 06/09: internal_add_connection(): improved thread safety in epoll mode with 'external' add,
gnunet <=
- [GNUnet-SVN] [libmicrohttpd] 03/09: internal_add_connection(): minor refactoring for additional error check and minor optimization, gnunet, 2017/06/04