aboutsummaryrefslogtreecommitdiff
path: root/src/deps/libuwsockets.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/deps/libuwsockets.cpp')
-rw-r--r--src/deps/libuwsockets.cpp29
1 files changed, 17 insertions, 12 deletions
diff --git a/src/deps/libuwsockets.cpp b/src/deps/libuwsockets.cpp
index 5acfead19..d542b7ecb 100644
--- a/src/deps/libuwsockets.cpp
+++ b/src/deps/libuwsockets.cpp
@@ -339,8 +339,11 @@ void uws_filter(int ssl, uws_app_t *app, uws_filter_handler handler,
}
}
-void uws_ws(int ssl, uws_app_t *app, const char *pattern,
- uws_socket_behavior_t behavior) {
+void uws_ws(int ssl, uws_app_t *app, void *upgradeContext, const char *pattern,
+ size_t pattern_length, size_t id,
+ const uws_socket_behavior_t *behavior_) {
+ uws_socket_behavior_t behavior = *behavior_;
+
if (ssl) {
auto generic_handler = uWS::SSLApp::WebSocketBehavior<void *>{
.compression = (uWS::CompressOptions)(uint64_t)behavior.compression,
@@ -354,10 +357,10 @@ void uws_ws(int ssl, uws_app_t *app, const char *pattern,
};
if (behavior.upgrade)
- generic_handler.upgrade = [behavior](auto *res, auto *req,
- auto *context) {
- behavior.upgrade((uws_res_t *)res, (uws_req_t *)req,
- (uws_socket_context_t *)context);
+ generic_handler.upgrade = [behavior, upgradeContext,
+ id](auto *res, auto *req, auto *context) {
+ behavior.upgrade(upgradeContext, (uws_res_t *)res, (uws_req_t *)req,
+ (uws_socket_context_t *)context, id);
};
if (behavior.open)
generic_handler.open = [behavior](auto *ws) {
@@ -388,7 +391,8 @@ void uws_ws(int ssl, uws_app_t *app, const char *pattern,
};
uWS::SSLApp *uwsApp = (uWS::SSLApp *)app;
- uwsApp->ws<void *>(pattern, std::move(generic_handler));
+ uwsApp->ws<void *>(std::string(pattern, pattern_length),
+ std::move(generic_handler));
} else {
auto generic_handler = uWS::App::WebSocketBehavior<void *>{
.compression = (uWS::CompressOptions)(uint64_t)behavior.compression,
@@ -402,10 +406,10 @@ void uws_ws(int ssl, uws_app_t *app, const char *pattern,
};
if (behavior.upgrade)
- generic_handler.upgrade = [behavior](auto *res, auto *req,
- auto *context) {
- behavior.upgrade((uws_res_t *)res, (uws_req_t *)req,
- (uws_socket_context_t *)context);
+ generic_handler.upgrade = [behavior, upgradeContext,
+ id](auto *res, auto *req, auto *context) {
+ behavior.upgrade(upgradeContext, (uws_res_t *)res, (uws_req_t *)req,
+ (uws_socket_context_t *)context, id);
};
if (behavior.open)
generic_handler.open = [behavior](auto *ws) {
@@ -435,7 +439,8 @@ void uws_ws(int ssl, uws_app_t *app, const char *pattern,
message.length());
};
uWS::App *uwsApp = (uWS::App *)app;
- uwsApp->ws<void *>(pattern, std::move(generic_handler));
+ uwsApp->ws<void *>(std::string(pattern, pattern_length),
+ std::move(generic_handler));
}
}