diff --git a/mongoose.c b/mongoose.c index 4988cdc19f8c50dfd9fd6f2da1ba18ca0bf035e7..966178a07427eabc3f4ec50542a1483d1c99e068 100644 --- a/mongoose.c +++ b/mongoose.c @@ -2631,7 +2631,9 @@ static void send_websocket_handshake_if_requested(struct mg_connection *conn) { *key = mg_get_header(conn, "Sec-WebSocket-Key"); if (ver != NULL && key != NULL) { conn->is_websocket = 1; - send_websocket_handshake(conn, key); + if (call_user(MG_CONN_2_CONN(conn), MG_WS_HANDSHAKE) == MG_FALSE) { + send_websocket_handshake(conn, key); + } } } diff --git a/mongoose.h b/mongoose.h index db22091ad835f8a1ee2514fedb0a0c7a7fe42762..f2efd0528b570bc387898dad9ebd56e2d03d3451 100644 --- a/mongoose.h +++ b/mongoose.h @@ -67,7 +67,7 @@ enum mg_event { MG_REQUEST, // If callback returns MG_FALSE, Mongoose continues with req MG_REPLY, // If callback returns MG_FALSE, Mongoose closes connection MG_CLOSE, // Connection is closed, callback return value is ignored - MG_LUA, // Called before LSP page invoked + MG_WS_HANDSHAKE, // New websocket connection, handshake request MG_HTTP_ERROR // If callback returns MG_FALSE, Mongoose continues with err }; typedef int (*mg_handler_t)(struct mg_connection *, enum mg_event);