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