aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel <smartalock@user.github.invalid>2021-11-22 15:37:18 +0000
committerAndy Green <andy@warmcat.com>2021-11-22 15:44:23 +0000
commitc295f8014ad88a3bdf833abd772375c92eb1d484 (patch)
treef6d0dfeeabdb2e8bdc4b3e5d502cf6067ff7ee62
parentd42a7900d6e1c1ed533ca4206d4f248b96d48a11 (diff)
downloadlibwebsockets-c295f8014ad88a3bdf833abd772375c92eb1d484.tar.gz
extpoll: make sure DEL_POLL_FD only coming once
https://github.com/warmcat/libwebsockets/issues/2500
-rw-r--r--lib/core-net/pollfd.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/lib/core-net/pollfd.c b/lib/core-net/pollfd.c
index e5a8ac9b..dea85aec 100644
--- a/lib/core-net/pollfd.c
+++ b/lib/core-net/pollfd.c
@@ -438,15 +438,17 @@ __remove_wsi_socket_from_fds(struct lws *wsi)
/* removed wsi has no position any more */
wsi->position_in_fds_table = LWS_NO_FDS_POS;
- }
#if defined(LWS_WITH_EXTERNAL_POLL)
- /* remove also from external POLL support via protocol 0 */
- if (lws_socket_is_valid(wsi->desc.sockfd) && wsi->a.vhost &&
- wsi->a.vhost->protocols[0].callback(wsi, LWS_CALLBACK_DEL_POLL_FD,
- wsi->user_space, (void *) &pa, 0))
- ret = -1;
+ /* remove also from external POLL support via protocol 0 */
+ if (lws_socket_is_valid(wsi->desc.sockfd) && wsi->a.vhost &&
+ wsi->a.vhost->protocols[0].callback(wsi,
+ LWS_CALLBACK_DEL_POLL_FD,
+ wsi->user_space,
+ (void *) &pa, 0))
+ ret = -1;
#endif
+ }
#if defined(LWS_WITH_SERVER)
if (!context->being_destroyed &&