Lines Matching defs:squery

57 static void end_squery(struct search_query *squery, ares_status_t status,
64 struct search_query *squery;
93 squery = ares_malloc_zero(sizeof(*squery));
94 if (!squery) {
98 squery->channel = channel;
99 squery->name = ares_strdup(name);
100 if (!squery->name) {
101 ares_free(squery);
108 squery->domains =
110 if (squery->domains == NULL) {
111 ares_free(squery->name);
112 ares_free(squery);
116 squery->ndomains = channel->ndomains;
119 squery->dnsclass = dnsclass;
120 squery->type = type;
121 squery->status_as_is = -1;
122 squery->callback = callback;
123 squery->arg = arg;
124 squery->timeouts = 0;
125 squery->ever_got_nodata = ARES_FALSE;
139 if (ndots >= channel->ndots || squery->ndomains == 0) {
141 squery->next_domain = 0;
142 squery->trying_as_is = ARES_TRUE;
143 ares_query(channel, name, dnsclass, type, search_callback, squery);
146 squery->next_domain = 1;
147 squery->trying_as_is = ARES_FALSE;
148 status = ares__cat_domain(name, squery->domains[0], &s);
150 ares_query(channel, s, dnsclass, type, search_callback, squery);
154 ares_free(squery->name);
155 ares_free(squery);
175 struct search_query *squery = (struct search_query *)arg;
176 ares_channel_t *channel = squery->channel;
179 squery->timeouts += (size_t)timeouts;
184 end_squery(squery, (ares_status_t)status, abuf, (size_t)alen);
187 if (squery->trying_as_is) {
188 squery->status_as_is = status;
199 squery->ever_got_nodata = ARES_TRUE;
202 if (squery->next_domain < squery->ndomains) {
205 mystatus = ares__cat_domain(squery->name,
206 squery->domains[squery->next_domain], &s);
208 end_squery(squery, mystatus, NULL, 0);
210 squery->trying_as_is = ARES_FALSE;
211 squery->next_domain++;
212 ares_query(channel, s, squery->dnsclass, squery->type, search_callback,
213 squery);
216 } else if (squery->status_as_is == -1) {
218 squery->trying_as_is = ARES_TRUE;
219 ares_query(channel, squery->name, squery->dnsclass, squery->type,
220 search_callback, squery);
222 if (squery->status_as_is == ARES_ENOTFOUND && squery->ever_got_nodata) {
223 end_squery(squery, ARES_ENODATA, NULL, 0);
225 end_squery(squery, (ares_status_t)squery->status_as_is, NULL, 0);
231 static void end_squery(struct search_query *squery, ares_status_t status,
234 squery->callback(squery->arg, (int)status, (int)squery->timeouts, abuf,
236 ares__strsplit_free(squery->domains, squery->ndomains);
237 ares_free(squery->name);
238 ares_free(squery);