From df5e997ea74da02ba26a3e22f650b391c27a0554 Mon Sep 17 00:00:00 2001 From: Sergey Lyubka <valenok@gmail.com> Date: Sat, 1 Mar 2014 01:55:40 +0000 Subject: [PATCH] ns_server_poll() waking up by ns_server_wakeup() --- mongoose.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mongoose.c b/mongoose.c index 40d965a18..cde68d3e0 100644 --- a/mongoose.c +++ b/mongoose.c @@ -767,6 +767,7 @@ int ns_server_poll(struct ns_server *server, int milli) { FD_ZERO(&read_set); FD_ZERO(&write_set); ns_add_to_set(server->listening_sock, &read_set, &max_fd); + ns_add_to_set(server->ctl[1], &read_set, &max_fd); for (conn = server->active_connections; conn != NULL; conn = tmp_conn) { tmp_conn = conn->next; @@ -797,6 +798,14 @@ int ns_server_poll(struct ns_server *server, int milli) { } } + // Read possible wakeup calls + if (server->ctl[1] != INVALID_SOCKET && + FD_ISSET(server->ctl[1], &read_set)) { + unsigned char ch; + recv(server->ctl[1], &ch, 1, 0); + send(server->ctl[1], &ch, 1, 0); + } + for (conn = server->active_connections; conn != NULL; conn = tmp_conn) { tmp_conn = conn->next; if (FD_ISSET(conn->sock, &read_set)) { -- GitLab