From e84d0574fad8d70598deeb51fa4cdbbb30e491fc Mon Sep 17 00:00:00 2001 From: Sergey Lyubka <valenok@gmail.com> Date: Sun, 29 Sep 2013 22:01:31 +0100 Subject: [PATCH] Fixed websocket example logic when freeing the message --- examples/websocket.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/examples/websocket.c b/examples/websocket.c index 4451969b5..602e687e3 100644 --- a/examples/websocket.c +++ b/examples/websocket.c @@ -3,6 +3,7 @@ #include <stdio.h> #include <string.h> +#include <stdlib.h> #include "mongoose.h" static int event_handler(struct mg_event *event) { @@ -25,14 +26,16 @@ static int event_handler(struct mg_event *event) { mg_websocket_write(event->conn, WEBSOCKET_OPCODE_TEXT, 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) { - // Echo message back to the client - mg_websocket_write(event->conn, WEBSOCKET_OPCODE_TEXT, data, len); 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); - free(data); break; } } -- GitLab