Skip to content

Commit 8abd049

Browse files
committed
AsyncWebSocketResponse - keep request object till WS_EVT_CONNECT event is executed
user code might use HTTP headers information from the request
1 parent 56af54d commit 8abd049

File tree

2 files changed

+5
-6
lines changed

2 files changed

+5
-6
lines changed

src/AsyncWebSocket.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -801,9 +801,10 @@ void AsyncWebSocket::_handleEvent(AsyncWebSocketClient *client, AwsEventType typ
801801

802802
AsyncWebSocketClient *AsyncWebSocket::_newClient(AsyncWebServerRequest *request) {
803803
_clients.emplace_back(request, this);
804-
// we've just detached AsyncTCP client from AsyncWebServerRequest,
805-
// *request was destructed along with response object in AsyncWebSocketClient's c-tor
806-
_handleEvent(&_clients.back(), WS_EVT_CONNECT, nullptr /* request */, NULL, 0);
804+
// we've just detached AsyncTCP client from AsyncWebServerRequest
805+
_handleEvent(&_clients.back(), WS_EVT_CONNECT, request, NULL, 0);
806+
// after user code completed CONNECT event callback we can delete req/respose objects
807+
delete request;
807808
return &_clients.back();
808809
}
809810

src/AsyncWebSocket.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -239,9 +239,7 @@ class AsyncWebSocketClient {
239239
* @param request
240240
* @param server
241241
*/
242-
AsyncWebSocketClient(AsyncWebServerRequest *request, AsyncWebSocket *server) : AsyncWebSocketClient(request->clientRelease(), server) {
243-
delete request;
244-
};
242+
AsyncWebSocketClient(AsyncWebServerRequest *request, AsyncWebSocket *server) : AsyncWebSocketClient(request->clientRelease(), server) { };
245243
~AsyncWebSocketClient();
246244

247245
// client id increments for the given server

0 commit comments

Comments
 (0)