aboutsummaryrefslogtreecommitdiff
path: root/evdns.c
diff options
context:
space:
mode:
authorHaibo Huang <hhb@google.com>2020-07-14 18:31:56 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2020-07-14 18:31:56 +0000
commit884d7a39094e590c9dc58f865b068f40694c6a49 (patch)
tree53915fc3eafdda183ab94c84e85ad7d7107afc6a /evdns.c
parentc4d7c4bdab4c5587b42073d60fb6aca6e335d76e (diff)
parent023ea039b9fada42e0cbbefcd75858a855a6130a (diff)
downloadlibevent-884d7a39094e590c9dc58f865b068f40694c6a49.tar.gz
Upgrade libevent to release-2.1.12-stable am: f0077b80a0 am: 023ea039b9
Original change: https://android-review.googlesource.com/c/platform/external/libevent/+/1360893 Change-Id: Iee716ec96a55737a04463c7b84c929c2e6418c54
Diffstat (limited to 'evdns.c')
-rw-r--r--evdns.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/evdns.c b/evdns.c
index de3848a..a5b31a3 100644
--- a/evdns.c
+++ b/evdns.c
@@ -3531,6 +3531,7 @@ evdns_base_set_option_impl(struct evdns_base *base,
base->global_max_retransmits = retries;
} else if (str_matches_option(option, "randomize-case:")) {
int randcase = strtoint(val);
+ if (randcase == -1) return -1;
if (!(flags & DNS_OPTION_MISC)) return 0;
base->global_randomize_case = randcase;
} else if (str_matches_option(option, "bind-to:")) {
@@ -3554,11 +3555,13 @@ evdns_base_set_option_impl(struct evdns_base *base,
sizeof(tv));
} else if (str_matches_option(option, "so-rcvbuf:")) {
int buf = strtoint(val);
+ if (buf == -1) return -1;
if (!(flags & DNS_OPTION_MISC)) return 0;
log(EVDNS_LOG_DEBUG, "Setting SO_RCVBUF to %s", val);
base->so_rcvbuf = buf;
} else if (str_matches_option(option, "so-sndbuf:")) {
int buf = strtoint(val);
+ if (buf == -1) return -1;
if (!(flags & DNS_OPTION_MISC)) return 0;
log(EVDNS_LOG_DEBUG, "Setting SO_SNDBUF to %s", val);
base->so_sndbuf = buf;
@@ -4032,7 +4035,7 @@ evdns_base_new(struct event_base *event_base, int flags)
#else
r = evdns_base_resolv_conf_parse(base, opts, "/etc/resolv.conf");
#endif
- if (r == -1) {
+ if (r) {
evdns_base_free_and_unlock(base, 0);
return NULL;
}
@@ -4106,6 +4109,11 @@ evdns_base_free_and_unlock(struct evdns_base *base, int fail_requests)
/* TODO(nickm) we might need to refcount here. */
+ 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);
+ }
for (i = 0; i < base->n_req_heads; ++i) {
while (base->req_heads[i]) {
if (fail_requests)
@@ -4113,11 +4121,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);
}
}
- 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) {