Fixed websocket example logic when freeing the message

This commit is contained in:
Sergey Lyubka 2013-09-29 22:01:31 +01:00
parent 1a64d37fc7
commit e84d0574fa

View File

@ -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;
}
}