diff --git a/lib/core-net/dummy-callback.c b/lib/core-net/dummy-callback.c index f54baf994..f677719bd 100644 --- a/lib/core-net/dummy-callback.c +++ b/lib/core-net/dummy-callback.c @@ -584,7 +584,7 @@ lws_callback_http_dummy(struct lws *wsi, enum lws_callback_reasons reason, case LWS_CALLBACK_CLOSED_CLIENT_HTTP: if (!lws_get_parent(wsi)) break; - lwsl_err("%s: LWS_CALLBACK_CLOSED_CLIENT_HTTP\n", __func__); + // lwsl_err("%s: LWS_CALLBACK_CLOSED_CLIENT_HTTP\n", __func__); lws_set_timeout(lws_get_parent(wsi), LWS_TO_KILL_ASYNC, PENDING_TIMEOUT_KILLED_BY_PROXY_CLIENT_CLOSE); break; diff --git a/lib/roles/raw-proxy/ops-raw-proxy.c b/lib/roles/raw-proxy/ops-raw-proxy.c index 2c6fc743a..772455197 100644 --- a/lib/roles/raw-proxy/ops-raw-proxy.c +++ b/lib/roles/raw-proxy/ops-raw-proxy.c @@ -164,8 +164,9 @@ rops_client_bind_raw_proxy(struct lws *wsi, /* we are a fallback if nothing else matched */ -// lws_role_transition(wsi, LWSIFR_CLIENT, LRS_UNCONNECTED, -// &role_ops_raw_proxy); + if (i->local_protocol_name && !strcmp(i->local_protocol_name, "raw-proxy")) + lws_role_transition(wsi, LWSIFR_CLIENT, LRS_UNCONNECTED, + &role_ops_raw_proxy); return 0; } diff --git a/lib/roles/raw-skt/ops-raw-skt.c b/lib/roles/raw-skt/ops-raw-skt.c index 690775691..cc505531b 100644 --- a/lib/roles/raw-skt/ops-raw-skt.c +++ b/lib/roles/raw-skt/ops-raw-skt.c @@ -206,7 +206,8 @@ rops_client_bind_raw_skt(struct lws *wsi, /* we are a fallback if nothing else matched */ - lws_role_transition(wsi, LWSIFR_CLIENT, LRS_UNCONNECTED, + if (!i->local_protocol_name || strcmp(i->local_protocol_name, "raw-proxy")) + lws_role_transition(wsi, LWSIFR_CLIENT, LRS_UNCONNECTED, &role_ops_raw_skt); return 1; /* matched */ diff --git a/plugins/raw-proxy/protocol_lws_raw_proxy.c b/plugins/raw-proxy/protocol_lws_raw_proxy.c index 6ebe5a620..26b9d33c5 100644 --- a/plugins/raw-proxy/protocol_lws_raw_proxy.c +++ b/plugins/raw-proxy/protocol_lws_raw_proxy.c @@ -252,10 +252,12 @@ bad_onward: break; case LWS_CALLBACK_RAW_PROXY_CLI_ADOPT: - lwsl_debug("LWS_CALLBACK_RAW_CLI_ADOPT: pss %p\n", pss); + lwsl_debug("%s: %p: LWS_CALLBACK_RAW_CLI_ADOPT: pss %p\n", __func__, wsi, pss); if (conn || !pss) break; conn = pss->conn = lws_get_opaque_user_data(wsi); + if (!conn) + break; conn->established[ONW] = 1; /* they start enabled */ conn->rx_enabled[ACC] = 1; @@ -445,6 +447,9 @@ bad_onward: return -1; } + if (!len) + return 0; + pkt.payload = malloc(len); if (!pkt.payload) { lwsl_notice("OOM: dropping\n");