diff --git a/lib/client-handshake.c b/lib/client-handshake.c index a4ccc6c04..e23ecced4 100644 --- a/lib/client-handshake.c +++ b/lib/client-handshake.c @@ -346,6 +346,7 @@ oom4: /* take care that we might be inserted in fds already */ if (wsi->position_in_fds_table != -1) goto failed1; + lws_remove_from_timeout_list(wsi); lws_header_table_detach(wsi, 0); lws_free(wsi); diff --git a/lib/libwebsockets.c b/lib/libwebsockets.c index a88a2575d..7300e9097 100755 --- a/lib/libwebsockets.c +++ b/lib/libwebsockets.c @@ -89,7 +89,7 @@ lws_free_wsi(struct lws *wsi) lws_free(wsi); } -static void +void lws_remove_from_timeout_list(struct lws *wsi) { struct lws_context_per_thread *pt = &wsi->context->pt[(int)wsi->tsi]; diff --git a/lib/private-libwebsockets.h b/lib/private-libwebsockets.h index a2abb2b64..d10d9063a 100644 --- a/lib/private-libwebsockets.h +++ b/lib/private-libwebsockets.h @@ -1612,6 +1612,9 @@ lws_issue_raw(struct lws *wsi, unsigned char *buf, size_t len); LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_service_timeout_check(struct lws *wsi, unsigned int sec); +LWS_EXTERN void +lws_remove_from_timeout_list(struct lws *wsi); + LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT lws_client_connect_2(struct lws *wsi);