aboutsummaryrefslogtreecommitdiff
path: root/lib/core-net
diff options
context:
space:
mode:
Diffstat (limited to 'lib/core-net')
-rw-r--r--lib/core-net/close.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/core-net/close.c b/lib/core-net/close.c
index 1a4e0f7f..5e4edafb 100644
--- a/lib/core-net/close.c
+++ b/lib/core-net/close.c
@@ -896,6 +896,18 @@ __lws_close_free_wsi_final(struct lws *wsi)
sanity_assert_no_sockfd_traces(wsi->a.context, wsi->desc.sockfd);
}
+ /* ... if we're closing the cancel pipe, account for it */
+
+ {
+ struct lws_context_per_thread *pt =
+ &wsi->a.context->pt[(int)wsi->tsi];
+
+ if (pt->pipe_wsi == wsi)
+ pt->pipe_wsi = NULL;
+ if (pt->dummy_pipe_fds[0] == wsi->desc.sockfd)
+ pt->dummy_pipe_fds[0] = LWS_SOCK_INVALID;
+ }
+
wsi->desc.sockfd = LWS_SOCK_INVALID;
#if defined(LWS_WITH_CLIENT)