mirror of
https://github.com/cesanta/mongoose.git
synced 2025-06-09 18:55:40 +08:00
Fixed websocket example logic when freeing the message
This commit is contained in:
parent
1a64d37fc7
commit
e84d0574fa
@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
#include "mongoose.h"
|
#include "mongoose.h"
|
||||||
|
|
||||||
static int event_handler(struct mg_event *event) {
|
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,
|
mg_websocket_write(event->conn, WEBSOCKET_OPCODE_TEXT,
|
||||||
server_ready_message, strlen(server_ready_message));
|
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 ((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);
|
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) {
|
if (memcmp(data, "exit", 4) == 0) {
|
||||||
mg_websocket_write(event->conn,
|
mg_websocket_write(event->conn,
|
||||||
WEBSOCKET_OPCODE_CONNECTION_CLOSE, "", 0);
|
WEBSOCKET_OPCODE_CONNECTION_CLOSE, "", 0);
|
||||||
free(data);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user