mirror of
https://github.com/cuberite/libevent.git
synced 2025-09-09 12:28:19 -04:00
Fix a crash in evdns related to shutting down evdns
Patch from YASUOKA Masahiko; fix for libevent github issue #113.
This commit is contained in:
parent
b56611d705
commit
9f39c88756
14
evdns.c
14
evdns.c
@ -3968,13 +3968,6 @@ evdns_base_free_and_unlock(struct evdns_base *base, int fail_requests)
|
|||||||
request_finished(base->req_heads[i], &REQ_HEAD(base, base->req_heads[i]->trans_id), 1);
|
request_finished(base->req_heads[i], &REQ_HEAD(base, base->req_heads[i]->trans_id), 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
while (base->req_waiting_head) {
|
|
||||||
if (fail_requests)
|
|
||||||
reply_schedule_callback(base->req_waiting_head, 0, DNS_ERR_SHUTDOWN, NULL);
|
|
||||||
request_finished(base->req_waiting_head, &base->req_waiting_head, 1);
|
|
||||||
}
|
|
||||||
base->global_requests_inflight = base->global_requests_waiting = 0;
|
|
||||||
|
|
||||||
for (server = base->server_head; server; server = server_next) {
|
for (server = base->server_head; server; server = server_next) {
|
||||||
server_next = server->next;
|
server_next = server->next;
|
||||||
evdns_nameserver_free(server);
|
evdns_nameserver_free(server);
|
||||||
@ -3983,6 +3976,13 @@ evdns_base_free_and_unlock(struct evdns_base *base, int fail_requests)
|
|||||||
}
|
}
|
||||||
base->server_head = NULL;
|
base->server_head = NULL;
|
||||||
base->global_good_nameservers = 0;
|
base->global_good_nameservers = 0;
|
||||||
|
while (base->req_waiting_head) {
|
||||||
|
if (fail_requests)
|
||||||
|
reply_schedule_callback(base->req_waiting_head, 0, DNS_ERR_SHUTDOWN, NULL);
|
||||||
|
request_finished(base->req_waiting_head, &base->req_waiting_head, 1);
|
||||||
|
}
|
||||||
|
base->global_requests_inflight = base->global_requests_waiting = 0;
|
||||||
|
|
||||||
|
|
||||||
if (base->global_search_state) {
|
if (base->global_search_state) {
|
||||||
for (dom = base->global_search_state->head; dom; dom = dom_next) {
|
for (dom = base->global_search_state->head; dom; dom = dom_next) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user