close wsi must do detatch ah flow even if no ah
Signed-off-by: Andy Green <andy.green@linaro.org>
This commit is contained in:
parent
12369b0c91
commit
00aaa3aa12
3 changed files with 23 additions and 15 deletions
|
@ -1,6 +1,13 @@
|
|||
Changelog
|
||||
---------
|
||||
|
||||
Fixes
|
||||
-----
|
||||
|
||||
1) MAJOR connections on ah waiting list that closed did not get removed from
|
||||
the waiting list...
|
||||
|
||||
|
||||
v1.7.2
|
||||
======
|
||||
|
||||
|
@ -41,6 +48,7 @@ Fixes
|
|||
get sent a content-length resulting in the link hanging until the peer closed
|
||||
it. attack.sh updated to add a test for this.
|
||||
|
||||
|
||||
Changes
|
||||
-------
|
||||
|
||||
|
|
|
@ -53,11 +53,12 @@ lws_free_wsi(struct lws *wsi)
|
|||
lws_free_set_NULL(wsi->rxflow_buffer);
|
||||
lws_free_set_NULL(wsi->trunc_alloc);
|
||||
|
||||
if (wsi->u.hdr.ah) {
|
||||
if (wsi->u.hdr.ah)
|
||||
/* we're closing, losing some rx is OK */
|
||||
wsi->u.hdr.ah->rxpos = wsi->u.hdr.ah->rxlen;
|
||||
lws_header_table_detach(wsi);
|
||||
}
|
||||
|
||||
/* we may not have an ah, but may be on the waiting list... */
|
||||
lws_header_table_detach(wsi);
|
||||
|
||||
wsi->context->count_wsi_allocated--;
|
||||
lwsl_debug("%s: %p, remaining wsi %d\n", __func__, wsi,
|
||||
|
|
|
@ -190,19 +190,18 @@ int lws_header_table_detach(struct lws *wsi)
|
|||
|
||||
pwsi = &pt->ah_wait_list;
|
||||
if (!ah) { /* remove from wait list if none attached */
|
||||
// if (wsi->socket_is_permanently_unusable)
|
||||
while (*pwsi) {
|
||||
if (*pwsi == wsi) {
|
||||
lwsl_info("%s: wsi %p, remv wait\n",
|
||||
__func__, wsi);
|
||||
*pwsi = wsi->u.hdr.ah_wait_list;
|
||||
wsi->u.hdr.ah_wait_list = NULL;
|
||||
pt->ah_wait_list_length--;
|
||||
goto bail;
|
||||
}
|
||||
pwsi = &(*pwsi)->u.hdr.ah_wait_list;
|
||||
while (*pwsi) {
|
||||
if (*pwsi == wsi) {
|
||||
lwsl_info("%s: wsi %p, remv wait\n",
|
||||
__func__, wsi);
|
||||
*pwsi = wsi->u.hdr.ah_wait_list;
|
||||
wsi->u.hdr.ah_wait_list = NULL;
|
||||
pt->ah_wait_list_length--;
|
||||
goto bail;
|
||||
}
|
||||
|
||||
pwsi = &(*pwsi)->u.hdr.ah_wait_list;
|
||||
}
|
||||
/* no ah, not on list... no more business here */
|
||||
goto bail;
|
||||
}
|
||||
/* we did have an ah attached */
|
||||
|
|
Loading…
Add table
Reference in a new issue