From 48be2dbc2abf90b1810aa265e418a6eff8e0d14b Mon Sep 17 00:00:00 2001
From: Sergey Lyubka <valenok@gmail.com>
Date: Thu, 20 Feb 2014 07:32:33 +0000
Subject: [PATCH] Added conditional for handling idle websocket conns

---
 mongoose.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/mongoose.c b/mongoose.c
index 9ad6da65b..f1a257e13 100644
--- a/mongoose.c
+++ b/mongoose.c
@@ -4545,6 +4545,7 @@ static void mg_ev_handler(struct ns_connection *nc, enum ns_event ev, void *p) {
     case NS_CLOSE:
       nc->connection_data = NULL;
       if ((nc->flags & MG_CGI_CONN) && conn && conn->ns_conn) {
+        conn->ns_conn->flags &= ~NSF_BUFFER_BUT_DONT_SEND;
         conn->ns_conn->flags |= conn->ns_conn->send_iobuf.len > 0 ?
           NSF_FINISHED_SENDING_DATA : NSF_CLOSE_IMMEDIATELY;
         conn->endpoint.cgi_conn = NULL;
@@ -4573,11 +4574,12 @@ static void mg_ev_handler(struct ns_connection *nc, enum ns_event ev, void *p) {
       {
         time_t current_time = * (time_t *) p;
 
-        if (conn->mg_conn.is_websocket) {
+        if (conn != NULL && conn->mg_conn.is_websocket) {
           ping_idle_websocket_connection(conn, current_time);
         }
 
         if (nc->last_io_time + MONGOOSE_IDLE_TIMEOUT_SECONDS < current_time) {
+          mg_ev_handler(nc, NS_CLOSE, NULL);
           nc->flags |= NSF_CLOSE_IMMEDIATELY;
         }
       }
-- 
GitLab