mirror of
https://git.gnunet.org/libmicrohttpd.git
synced 2026-09-28 04:09:31 +03:00
test_upgrade_large.c: used portable way of inter-thread communication
This commit is contained in:
@@ -233,7 +233,7 @@ test_upgrade_LDADD = \
|
||||
$(PTHREAD_LIBS)
|
||||
|
||||
test_upgrade_large_SOURCES = \
|
||||
test_upgrade_large.c test_helpers.h mhd_sockets.h
|
||||
test_upgrade_large.c test_helpers.h mhd_sockets.h mhd_sockets.c mhd_itc.h mhd_itc_types.h mhd_itc.c
|
||||
test_upgrade_large_CPPFLAGS = \
|
||||
$(AM_CPPFLAGS) $(MHD_TLS_LIB_CPPFLAGS)
|
||||
test_upgrade_large_CFLAGS = \
|
||||
@@ -259,7 +259,7 @@ test_upgrade_tls_LDADD = \
|
||||
$(PTHREAD_LIBS)
|
||||
|
||||
test_upgrade_large_tls_SOURCES = \
|
||||
test_upgrade_large.c test_helpers.h mhd_sockets.h
|
||||
test_upgrade_large.c test_helpers.h mhd_sockets.h mhd_sockets.c mhd_itc.h mhd_itc_types.h mhd_itc.c
|
||||
test_upgrade_large_tls_CPPFLAGS = \
|
||||
$(AM_CPPFLAGS) $(MHD_TLS_LIB_CPPFLAGS)
|
||||
test_upgrade_large_tls_CFLAGS = \
|
||||
|
||||
@@ -48,6 +48,7 @@
|
||||
|
||||
#include "platform.h"
|
||||
#include "microhttpd.h"
|
||||
#include "mhd_itc.h"
|
||||
|
||||
#include "test_helpers.h"
|
||||
|
||||
@@ -69,7 +70,7 @@
|
||||
|
||||
static int verbose = 0;
|
||||
|
||||
static int kicker[2] = {-1, -1};
|
||||
static struct MHD_itc_ kicker = MHD_ITC_STATIC_INIT_INVALID;
|
||||
|
||||
enum tls_tool
|
||||
{
|
||||
@@ -588,9 +589,9 @@ make_blocking (MHD_socket fd)
|
||||
static void
|
||||
kick_select ()
|
||||
{
|
||||
if (-1 != kicker[1])
|
||||
if (MHD_ITC_IS_VALID_(kicker))
|
||||
{
|
||||
(void) write (kicker[1], "K", 1);
|
||||
MHD_itc_activate_ (kicker, "K");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -917,9 +918,8 @@ run_mhd_select_loop (struct MHD_Daemon *daemon)
|
||||
MHD_socket max_fd;
|
||||
MHD_UNSIGNED_LONG_LONG to;
|
||||
struct timeval tv;
|
||||
char drain[128];
|
||||
|
||||
if (0 != pipe (kicker))
|
||||
if (!MHD_itc_init_ (kicker))
|
||||
abort ();
|
||||
while (! done)
|
||||
{
|
||||
@@ -929,7 +929,7 @@ run_mhd_select_loop (struct MHD_Daemon *daemon)
|
||||
max_fd = -1;
|
||||
to = 1000;
|
||||
|
||||
FD_SET (kicker[0], &rs);
|
||||
FD_SET (MHD_itc_r_fd_ (kicker), &rs);
|
||||
if (MHD_YES !=
|
||||
MHD_get_fdset (daemon,
|
||||
&rs,
|
||||
@@ -949,17 +949,15 @@ run_mhd_select_loop (struct MHD_Daemon *daemon)
|
||||
&es,
|
||||
&tv))
|
||||
abort ();
|
||||
if (FD_ISSET (kicker[0], &rs))
|
||||
(void) read (kicker[0], drain, sizeof (drain));
|
||||
if (FD_ISSET (MHD_itc_r_fd_ (kicker), &rs))
|
||||
MHD_itc_clear_ (kicker);
|
||||
MHD_run_from_select (daemon,
|
||||
&rs,
|
||||
&ws,
|
||||
&es);
|
||||
}
|
||||
close (kicker[0]);
|
||||
close (kicker[1]);
|
||||
kicker[0] = -1;
|
||||
kicker[1] = -1;
|
||||
MHD_itc_destroy_ (kicker);
|
||||
MHD_itc_set_invalid_ (kicker);
|
||||
}
|
||||
|
||||
|
||||
@@ -1001,13 +999,13 @@ run_mhd_epoll_loop (struct MHD_Daemon *daemon)
|
||||
di = MHD_get_daemon_info (daemon,
|
||||
MHD_DAEMON_INFO_EPOLL_FD);
|
||||
ep = di->listen_fd;
|
||||
if (0 != pipe (kicker))
|
||||
if (!MHD_itc_init_ (kicker))
|
||||
abort ();
|
||||
while (! done)
|
||||
{
|
||||
FD_ZERO (&rs);
|
||||
to = 1000;
|
||||
FD_SET (kicker[0], &rs);
|
||||
FD_SET (MHD_itc_r_fd_ (kicker), &rs);
|
||||
FD_SET (ep, &rs);
|
||||
(void) MHD_get_timeout (daemon,
|
||||
&to);
|
||||
@@ -1024,14 +1022,12 @@ run_mhd_epoll_loop (struct MHD_Daemon *daemon)
|
||||
(EAGAIN != errno) &&
|
||||
(EINTR != errno) )
|
||||
abort ();
|
||||
if (FD_ISSET (kicker[0], &rs))
|
||||
(void) read (kicker[0], drain, sizeof (drain));
|
||||
if (FD_ISSET (MHD_itc_r_fd_ (kicker), &rs))
|
||||
MHD_itc_clear_ (kicker);
|
||||
MHD_run (daemon);
|
||||
}
|
||||
close (kicker[0]);
|
||||
close (kicker[1]);
|
||||
kicker[0] = -1;
|
||||
kicker[1] = -1;
|
||||
MHD_itc_destroy_ (kicker);
|
||||
MHD_itc_set_invalid_ (kicker);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user