diff --git a/examples/websocket.c b/examples/websocket.c index 050c51e5dfd0112dbcfcd1ba4442e399b23b6762..4451969b5a046fbf27842e71975330c35535c98b 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 7a97dd3fda74263cb99db32738d0df40e69584de..26e94e64f9f24ba434bf0c417009803e91870871 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,