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