Skip to content

Commit 8d85d0d

Browse files
authored
Replace unnecessary lambda for close event (#1761)
* Remove unnecessary lambda * Free userdata here instead * Free userdata here instead
1 parent c682365 commit 8d85d0d

File tree

3 files changed

+5
-9
lines changed

3 files changed

+5
-9
lines changed

src/App.h

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -382,14 +382,7 @@ struct TemplatedApp {
382382
webSocketContext->getExt()->droppedHandler = std::move(behavior.dropped);
383383
webSocketContext->getExt()->drainHandler = std::move(behavior.drain);
384384
webSocketContext->getExt()->subscriptionHandler = std::move(behavior.subscription);
385-
webSocketContext->getExt()->closeHandler = std::move([closeHandler = std::move(behavior.close)](WebSocket<SSL, true, UserData> *ws, int code, std::string_view message) mutable {
386-
if (closeHandler) {
387-
closeHandler(ws, code, message);
388-
}
389-
390-
/* Destruct user data after returning from close handler */
391-
((UserData *) ws->getUserData())->~UserData();
392-
});
385+
webSocketContext->getExt()->closeHandler = std::move(behavior.close);
393386
webSocketContext->getExt()->pingHandler = std::move(behavior.ping);
394387
webSocketContext->getExt()->pongHandler = std::move(behavior.pong);
395388

src/WebSocket.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,7 @@ struct WebSocket : AsyncSocket<SSL> {
241241
if (webSocketContextData->closeHandler) {
242242
webSocketContextData->closeHandler(this, code, message);
243243
}
244+
((USERDATA *) this->getUserData())->~USERDATA();
244245
}
245246

246247
/* Corks the response if possible. Leaves already corked socket be. */

src/WebSocketContext.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,9 +269,11 @@ struct WebSocketContext {
269269
webSocketContextData->topicTree->freeSubscriber(webSocketData->subscriber);
270270
webSocketData->subscriber = nullptr;
271271

272+
auto *ws = (WebSocket<SSL, isServer, USERDATA> *) s;
272273
if (webSocketContextData->closeHandler) {
273-
webSocketContextData->closeHandler((WebSocket<SSL, isServer, USERDATA> *) s, 1006, {(char *) reason, (size_t) code});
274+
webSocketContextData->closeHandler(ws, 1006, {(char *) reason, (size_t) code});
274275
}
276+
((USERDATA *) ws->getUserData())->~USERDATA();
275277
}
276278

277279
/* Destruct in-placed data struct */

0 commit comments

Comments
 (0)