Clear subscriptions before calling close handler, not after
This commit is contained in:
+4
-4
@@ -195,14 +195,14 @@ public:
|
|||||||
/* Set shorter timeout (use ping-timeout) to avoid long hanging sockets after end() on broken connections */
|
/* Set shorter timeout (use ping-timeout) to avoid long hanging sockets after end() on broken connections */
|
||||||
Super::timeout(webSocketContextData->idleTimeoutComponents.second);
|
Super::timeout(webSocketContextData->idleTimeoutComponents.second);
|
||||||
|
|
||||||
|
/* Make sure to unsubscribe from any pub/sub node at exit */
|
||||||
|
webSocketContextData->topicTree->freeSubscriber(webSocketData->subscriber);
|
||||||
|
webSocketData->subscriber = nullptr;
|
||||||
|
|
||||||
/* Emit close event */
|
/* Emit close event */
|
||||||
if (webSocketContextData->closeHandler) {
|
if (webSocketContextData->closeHandler) {
|
||||||
webSocketContextData->closeHandler(this, code, message);
|
webSocketContextData->closeHandler(this, code, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Make sure to unsubscribe from any pub/sub node at exit */
|
|
||||||
webSocketContextData->topicTree->freeSubscriber(webSocketData->subscriber);
|
|
||||||
webSocketData->subscriber = nullptr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Corks the response if possible. Leaves already corked socket be. */
|
/* Corks the response if possible. Leaves already corked socket be. */
|
||||||
|
|||||||
@@ -258,13 +258,13 @@ private:
|
|||||||
/* Emit close event */
|
/* Emit close event */
|
||||||
auto *webSocketContextData = (WebSocketContextData<SSL, USERDATA> *) us_socket_context_ext(SSL, us_socket_context(SSL, (us_socket_t *) s));
|
auto *webSocketContextData = (WebSocketContextData<SSL, USERDATA> *) us_socket_context_ext(SSL, us_socket_context(SSL, (us_socket_t *) s));
|
||||||
|
|
||||||
if (webSocketContextData->closeHandler) {
|
|
||||||
webSocketContextData->closeHandler((WebSocket<SSL, isServer, USERDATA> *) s, 1006, {(char *) reason, (size_t) code});
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Make sure to unsubscribe from any pub/sub node at exit */
|
/* Make sure to unsubscribe from any pub/sub node at exit */
|
||||||
webSocketContextData->topicTree->freeSubscriber(webSocketData->subscriber);
|
webSocketContextData->topicTree->freeSubscriber(webSocketData->subscriber);
|
||||||
webSocketData->subscriber = nullptr;
|
webSocketData->subscriber = nullptr;
|
||||||
|
|
||||||
|
if (webSocketContextData->closeHandler) {
|
||||||
|
webSocketContextData->closeHandler((WebSocket<SSL, isServer, USERDATA> *) s, 1006, {(char *) reason, (size_t) code});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Destruct in-placed data struct */
|
/* Destruct in-placed data struct */
|
||||||
|
|||||||
Reference in New Issue
Block a user