diff options
Diffstat (limited to 'src/microhttpd/daemon.c')
-rw-r--r-- | src/microhttpd/daemon.c | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/src/microhttpd/daemon.c b/src/microhttpd/daemon.c index 5e9be378..b14e68f3 100644 --- a/src/microhttpd/daemon.c +++ b/src/microhttpd/daemon.c @@ -4548,13 +4548,10 @@ MHD_select (struct MHD_Daemon *daemon, &maxsock, FD_SETSIZE)) ) { -#if ! defined(MHD_WINSOCK_SOCKETS) -#ifdef HAVE_MESSAGES - MHD_DLOG (daemon, _ ("Could not add control inter-thread " \ - "communication channel FD to fdset.\n")); -#endif - err_state = MHD_YES; -#else /* MHD_WINSOCK_SOCKETS */ + bool retry_succeed; + + retry_succeed = false; +#if defined(MHD_WINSOCK_SOCKETS) /* fdset limit reached, new connections cannot be handled. Remove listen socket FD from fdset and retry to add ITC FD. */ @@ -4563,19 +4560,22 @@ MHD_select (struct MHD_Daemon *daemon, { FD_CLR (ls, &rs); - if (! MHD_add_to_fd_set_ (MHD_itc_r_fd_ (daemon->itc), - &rs, - &maxsock, - FD_SETSIZE)) - { + if (MHD_add_to_fd_set_ (MHD_itc_r_fd_ (daemon->itc), + &rs, + &maxsock, + FD_SETSIZE)) + retry_succeed = true; + } +#endif /* MHD_WINSOCK_SOCKETS */ + + if (! retry_succeed) + { #ifdef HAVE_MESSAGES - MHD_DLOG (daemon, _ ("Could not add control inter-thread " \ - "communication channel FD to fdset.\n")); + MHD_DLOG (daemon, _ ("Could not add control inter-thread " \ + "communication channel FD to fdset.\n")); #endif - err_state = MHD_YES; - } + err_state = MHD_YES; } -#endif /* MHD_WINSOCK_SOCKETS */ } /* Stop listening if we are at the configured connection limit */ /* If we're at the connection limit, no point in really |