Lines Matching refs:aquery

62 static void          next_lookup(struct addr_query *aquery);
65 static void end_aquery(struct addr_query *aquery, ares_status_t status,
75 struct addr_query *aquery;
82 if ((family == AF_INET && addrlen != sizeof(aquery->addr.addr.addr4)) ||
83 (family == AF_INET6 && addrlen != sizeof(aquery->addr.addr.addr6))) {
88 aquery = ares_malloc(sizeof(struct addr_query));
89 if (!aquery) {
93 aquery->lookups = ares_strdup(channel->lookups);
94 if (aquery->lookups == NULL) {
95 ares_free(aquery);
99 aquery->channel = channel;
101 memcpy(&aquery->addr.addr.addr4, addr, sizeof(aquery->addr.addr.addr4));
103 memcpy(&aquery->addr.addr.addr6, addr, sizeof(aquery->addr.addr.addr6));
105 aquery->addr.family = family;
106 aquery->callback = callback;
107 aquery->arg = arg;
108 aquery->remaining_lookups = aquery->lookups;
109 aquery->timeouts = 0;
111 next_lookup(aquery);
125 static void next_lookup(struct addr_query *aquery)
132 for (p = aquery->remaining_lookups; *p; p++) {
135 name = ares_dns_addr_to_ptr(&aquery->addr);
137 end_aquery(aquery, ARES_ENOMEM, NULL);
140 aquery->remaining_lookups = p + 1;
141 ares_query(aquery->channel, name, C_IN, T_PTR, addr_callback, aquery);
145 status = file_lookup(aquery->channel, &aquery->addr, &host);
151 end_aquery(aquery, status, host);
159 end_aquery(aquery, ARES_ENOTFOUND, NULL);
165 struct addr_query *aquery = (struct addr_query *)arg;
169 aquery->timeouts += (size_t)timeouts;
171 if (aquery->addr.family == AF_INET) {
172 addrlen = sizeof(aquery->addr.addr.addr4);
173 status = ares_parse_ptr_reply(abuf, alen, &aquery->addr.addr.addr4,
176 addrlen = sizeof(aquery->addr.addr.addr6);
177 status = ares_parse_ptr_reply(abuf, alen, &aquery->addr.addr.addr6,
180 end_aquery(aquery, (ares_status_t)status, host);
182 end_aquery(aquery, (ares_status_t)status, NULL);
184 next_lookup(aquery);
188 static void end_aquery(struct addr_query *aquery, ares_status_t status,
191 aquery->callback(aquery->arg, (int)status, (int)aquery->timeouts, host);
195 ares_free(aquery->lookups);
196 ares_free(aquery);