1
0
mirror of https://github.com/moparisthebest/curl synced 2024-12-23 08:38:49 -05:00

multi: update pending list when removing handle

when removing a handle, most of the lists are updated but pending list
is not updated. Updating now.

Closes #6713
This commit is contained in:
ejanchivdorj 2021-03-09 13:23:43 -08:00 committed by Daniel Stenberg
parent 4088b25b33
commit a2bbc3ac8c
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2

View File

@ -824,6 +824,17 @@ CURLMcode curl_multi_remove_handle(struct Curl_multi *multi,
} }
} }
/* Remove from the pending list if it is there. Otherwise this will
remain on the pending list forever due to the state change. */
for(e = multi->pending.head; e; e = e->next) {
struct Curl_easy *curr_data = e->ptr;
if(curr_data == data) {
Curl_llist_remove(&multi->pending, e, NULL);
break;
}
}
/* make the previous node point to our next */ /* make the previous node point to our next */
if(data->prev) if(data->prev)
data->prev->next = data->next; data->prev->next = data->next;
@ -840,6 +851,8 @@ CURLMcode curl_multi_remove_handle(struct Curl_multi *multi,
We do not touch the easy handle here! */ We do not touch the easy handle here! */
multi->num_easy--; /* one less to care about now */ multi->num_easy--; /* one less to care about now */
process_pending_handles(multi);
Curl_update_timer(multi); Curl_update_timer(multi);
return CURLM_OK; return CURLM_OK;
} }