From 1a64d37fc730379802e7d699f491c8682d53dc9f Mon Sep 17 00:00:00 2001
From: Sergey Lyubka <valenok@gmail.com>
Date: Sun, 29 Sep 2013 09:25:47 +0100
Subject: [PATCH] Fixed mg_websocket_read()

---
 examples/websocket.c | 2 ++
 mongoose.c           | 9 +--------
 2 files changed, 3 insertions(+), 8 deletions(-)

diff --git a/examples/websocket.c b/examples/websocket.c
index 050c51e5d..4451969b5 100644
--- a/examples/websocket.c
+++ b/examples/websocket.c
@@ -28,9 +28,11 @@ static int event_handler(struct mg_event *event) {
         while ((len = mg_websocket_read(event->conn, &bits, &data)) > 0) {
           // Echo message back to the client
           mg_websocket_write(event->conn, WEBSOCKET_OPCODE_TEXT, data, len);
+          printf("got message: [%.*s]\n", len, data);
           if (memcmp(data, "exit", 4) == 0) {
             mg_websocket_write(event->conn,
                                WEBSOCKET_OPCODE_CONNECTION_CLOSE, "", 0);
+            free(data);
             break;
           }
         }
diff --git a/mongoose.c b/mongoose.c
index 7a97dd3fd..26e94e64f 100644
--- a/mongoose.c
+++ b/mongoose.c
@@ -4090,14 +4090,7 @@ int mg_websocket_read(struct mg_connection *conn, int *bits, char **data) {
         }
       }
 
-      // Exit the loop if callback signalled to exit,
-      // or "connection close" opcode received.
-      if ((*bits & 0x0f) == WEBSOCKET_OPCODE_CONNECTION_CLOSE) {
-        return data_len;
-        stop = 1;
-      }
-
-      // Not breaking the loop, process next websocket frame.
+      return data_len;
     } else {
       // Buffering websocket request
       if ((n = pull(NULL, conn, conn->buf + conn->data_len,
-- 
GitLab