From 3d6a1e11c27630a477d1b5046b5aa56f06d4cd12 Mon Sep 17 00:00:00 2001 From: Andy Green Date: Tue, 21 Feb 2017 23:38:40 +0800 Subject: [PATCH] client connect: oom4 clean up timeout list https://github.com/warmcat/libwebsockets/issues/810 --- lib/client-handshake.c | 1 + lib/libwebsockets.c | 2 +- lib/private-libwebsockets.h | 3 +++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/client-handshake.c b/lib/client-handshake.c index a4ccc6c0..e23ecced 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 a88a2575..7300e909 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 a2abb2b6..d10d9063 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);