aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpayne.ye <payne.ye@zoom.us>2024-04-12 09:49:37 +0800
committerAndy Green <andy@warmcat.com>2024-04-12 06:25:21 +0100
commitbd8f69e43835f3d57656f25efa84816991e21c10 (patch)
tree3158b2b24910918b273af938270898186b9c97d2
parenteac448923781abb083cedf0fa114e96ffc89a16e (diff)
downloadlibwebsockets-bd8f69e43835f3d57656f25efa84816991e21c10.tar.gz
smp: extend client to work with tsi
and take care of zombie sul previously left on connect failure path
-rw-r--r--lib/core-net/client/connect3.c5
-rw-r--r--lib/core-net/client/connect4.c4
2 files changed, 5 insertions, 4 deletions
diff --git a/lib/core-net/client/connect3.c b/lib/core-net/client/connect3.c
index a9d2e9e0..1ab5b178 100644
--- a/lib/core-net/client/connect3.c
+++ b/lib/core-net/client/connect3.c
@@ -217,7 +217,7 @@ lws_client_connect_3_connect(struct lws *wsi, const char *ads,
*/
lwsi_set_state(wsi, LRS_UNCONNECTED);
- lws_sul_schedule(wsi->a.context, 0, &wsi->sul_connect_timeout,
+ lws_sul_schedule(wsi->a.context, wsi->tsi, &wsi->sul_connect_timeout,
lws_client_dns_retry_timeout,
LWS_USEC_PER_SEC);
return wsi;
@@ -601,7 +601,7 @@ ads_known:
* uses wsi->sul_connect_timeout just for this purpose
*/
- lws_sul_schedule(wsi->a.context, 0, &wsi->sul_connect_timeout,
+ lws_sul_schedule(wsi->a.context, wsi->tsi, &wsi->sul_connect_timeout,
lws_client_conn_wait_timeout,
wsi->a.context->timeout_secs *
LWS_USEC_PER_SEC);
@@ -728,6 +728,7 @@ try_next_dns_result:
lws_inform_client_conn_fail(wsi, (void *)cce, strlen(cce));
failed1:
+ lws_sul_cancel(&wsi->sul_connect_timeout);
lws_close_free_wsi(wsi, LWS_CLOSE_STATUS_NOSTATUS, "client_connect3");
return NULL;
diff --git a/lib/core-net/client/connect4.c b/lib/core-net/client/connect4.c
index c34d2253..d96ba7c5 100644
--- a/lib/core-net/client/connect4.c
+++ b/lib/core-net/client/connect4.c
@@ -279,7 +279,7 @@ send_hs:
pfd.revents = LWS_POLLOUT;
lwsl_wsi_info(wsi, "going to service fd");
- n = lws_service_fd(wsi->a.context, &pfd);
+ n = lws_service_fd_tsi(wsi->a.context, &pfd, wsi->tsi);
if (n < 0) {
cce = "first service failed";
goto failed;
@@ -318,7 +318,7 @@ provoke_service:
pfd.events = LWS_POLLIN;
pfd.revents = LWS_POLLIN;
- n = lws_service_fd(wsi->a.context, &pfd);
+ n = lws_service_fd_tsi(wsi->a.context, &pfd, wsi->tsi);
if (n < 0) {
cce = "first service failed";
goto failed;