1
0
Fork 0
mirror of https://github.com/warmcat/libwebsockets.git synced 2025-03-09 00:00:04 +01:00

vhost: listen: protect listen port transfer between

...vhosts from vh destroy on zero refcount

https://github.com/warmcat/libwebsockets/issues/2343
This commit is contained in:
Andy Green 2021-07-12 06:12:05 +01:00
parent 1ae1fccbec
commit c8176085df

View file

@ -1349,8 +1349,21 @@ lws_vhost_destroy1(struct lws_vhost *vh)
&v->listen_wsi);
/* req cx + vh lock */
/*
* If the vhost sees it's being destroyed and
* in the unbind the number of wsis bound to
* it falls to zero, it will destroy the
* vhost opportunistically before we can
* complete the transfer. Add a fake wsi
* bind temporarily to disallow this...
*/
v->count_bound_wsi++;
__lws_vhost_unbind_wsi(wsi);
lws_vhost_bind_wsi(v, wsi);
/*
* ... remove the fake wsi bind
*/
v->count_bound_wsi--;
break;
}
} lws_end_foreach_ll(v, vhost_next);