From 40ab4a8d3dd53a3e6e283bab81b629ec95056f57 Mon Sep 17 00:00:00 2001 From: Sergey Lyubka <valenok@gmail.com> Date: Sun, 29 Sep 2013 22:43:58 +0100 Subject: [PATCH] Fixed websocket example logic when freeing the message, again! --- examples/websocket.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/examples/websocket.c b/examples/websocket.c index 602e687e3..5fbf5005f 100644 --- a/examples/websocket.c +++ b/examples/websocket.c @@ -19,7 +19,7 @@ static int event_handler(struct mg_event *event) { } else { static const char *server_ready_message = "server ready"; char *data; - int bits, len; + int bits, len, must_exit = 0; // Handshake, and send initial server message mg_websocket_handshake(event->conn); @@ -27,17 +27,21 @@ static int event_handler(struct mg_event *event) { server_ready_message, strlen(server_ready_message)); // Read messages sent by client. Echo them back. - while ((len = mg_websocket_read(event->conn, &bits, &data)) > 0) { + while (must_exit == 0 && + (len = mg_websocket_read(event->conn, &bits, &data)) > 0) { + printf("got message: [%.*s]\n", len, data); mg_websocket_write(event->conn, WEBSOCKET_OPCODE_TEXT, data, len); - free(data); // It's our responsibility to free allocated message // If the message is "exit", close the connection, exit the loop if (memcmp(data, "exit", 4) == 0) { mg_websocket_write(event->conn, WEBSOCKET_OPCODE_CONNECTION_CLOSE, "", 0); - break; + must_exit = 1; } + + // It's our responsibility to free allocated message + free(data); } } return 1; -- GitLab