MHD_stop_daemon(): do not shutdown listen socket before setting shutdown flag

This commit is contained in:
Evgeny Grin (Karlson2k)
2017-10-30 16:13:39 +03:00
parent 21ce9bfad3
commit d8a32e84af
+20 -8
View File
@@ -6239,12 +6239,6 @@ MHD_stop_daemon (struct MHD_Daemon *daemon)
else
fd = daemon->listen_fd;
if (MHD_INVALID_SOCKET != fd)
{
(void) shutdown (fd,
SHUT_RDWR);
}
if (NULL != daemon->worker_pool)
{ /* Master daemon with worker pool. */
mhd_assert (1 < daemon->worker_pool_size);
@@ -6262,6 +6256,13 @@ MHD_stop_daemon (struct MHD_Daemon *daemon)
else
mhd_assert (MHD_INVALID_SOCKET != fd);
}
#ifdef HAVE_LISTEN_SHUTDOWN
if (MHD_INVALID_SOCKET != fd)
{
(void) shutdown (fd,
SHUT_RDWR);
}
#endif /* HAVE_LISTEN_SHUTDOWN */
for (i = 0; i < daemon->worker_pool_size; ++i)
{
MHD_stop_daemon (&daemon->worker_pool[i]);
@@ -6292,7 +6293,18 @@ MHD_stop_daemon (struct MHD_Daemon *daemon)
MHD_PANIC (_("Failed to signal shutdown via inter-thread communication channel"));
}
else
mhd_assert (MHD_INVALID_SOCKET != fd);
{
#ifdef HAVE_LISTEN_SHUTDOWN
if (MHD_INVALID_SOCKET != fd)
{
if (NULL == daemon->master)
(void) shutdown (fd,
SHUT_RDWR);
}
else
#endif /* HAVE_LISTEN_SHUTDOWN */
mhd_assert (false); /* Should never happen */
}
if (! MHD_join_thread_ (daemon->pid.handle))
{
@@ -6303,7 +6315,7 @@ MHD_stop_daemon (struct MHD_Daemon *daemon)
}
else
{
/* Internal threads are not used polling sockets. */
/* No internal threads are used for polling sockets. */
close_all_connections (daemon);
}
if (MHD_ITC_IS_VALID_ (daemon->itc))