mirror of
https://github.com/moparisthebest/curl
synced 2024-12-23 00:28:48 -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:
parent
4088b25b33
commit
a2bbc3ac8c
13
lib/multi.c
13
lib/multi.c
@ -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 */
|
||||
if(data->prev)
|
||||
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! */
|
||||
multi->num_easy--; /* one less to care about now */
|
||||
|
||||
process_pending_handles(multi);
|
||||
|
||||
Curl_update_timer(multi);
|
||||
return CURLM_OK;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user