diff --git a/examples/EchoServer.cpp b/examples/EchoServer.cpp index d591efe..b0a35c8 100644 --- a/examples/EchoServer.cpp +++ b/examples/EchoServer.cpp @@ -31,7 +31,7 @@ int main() { .upgrade = [](auto *res, auto *req, auto *context) { /* Immediate path */ - res->template upgrade(req->getHeader("sec-websocket-key"), + res->template upgrade({.something = 13}, req->getHeader("sec-websocket-key"), req->getHeader("sec-websocket-protocol"), req->getHeader("sec-websocket-extensions"), context); @@ -69,7 +69,7 @@ int main() { if (!*aborted) { // this should get some kind of ticket - res->template upgrade(secWebSocketKey, + res->template upgrade({}, secWebSocketKey, secWebSocketProtocol, secWebSocketExtensions, context); diff --git a/src/App.h b/src/App.h index 72d48f7..580ad03 100644 --- a/src/App.h +++ b/src/App.h @@ -179,7 +179,7 @@ public: std::string_view secWebSocketProtocol = req->getHeader("sec-websocket-protocol"); std::string_view secWebSocketExtensions = req->getHeader("sec-websocket-extensions"); - res->template upgrade(secWebSocketKey, secWebSocketProtocol, secWebSocketExtensions, (struct us_socket_context_t *) webSocketContext); + res->template upgrade({}, secWebSocketKey, secWebSocketProtocol, secWebSocketExtensions, (struct us_socket_context_t *) webSocketContext); } /* Emit open event and start the timeout */ diff --git a/src/HttpResponse.h b/src/HttpResponse.h index e6d7aba..6b9f232 100644 --- a/src/HttpResponse.h +++ b/src/HttpResponse.h @@ -171,7 +171,7 @@ private: public: /* This call is identical to end, but will never write content-length and is thus suitable for upgrades */ template - void upgrade(std::string_view secWebSocketKey, std::string_view secWebSocketProtocol, + void upgrade(UserData &&userData, std::string_view secWebSocketKey, std::string_view secWebSocketProtocol, std::string_view secWebSocketExtensions, struct us_socket_context_t *webSocketContext) { @@ -266,7 +266,7 @@ public: us_socket_timeout(SSL, (us_socket_t *) webSocket, /*behavior.*/idleTimeout); /* Default construct the UserData right before calling open handler */ - new (webSocket->getUserData()) UserData; + new (webSocket->getUserData()) UserData(std::move(userData)); /* Emit open event and start the timeout */ if (webSocketContextData->openHandler) {