Lines Matching refs:lookup
10 #include "dns-lookup.h"
61 struct dns_lookup *lookup, *next;
73 lookup = client->head;
75 while (lookup != NULL) {
76 next = lookup->next;
77 lookup->callback(&result, lookup->context);
78 dns_lookup_free(&lookup);
79 lookup = next;
83 static int dns_lookup_input_line(struct dns_lookup *lookup, const char *line)
85 struct dns_lookup_result *result = &lookup->result;
88 if (lookup->ptr_lookup) {
91 result->name = lookup->name =
113 result->ips = lookup->ips =
116 if (net_addr2ip(line, &lookup->ips[lookup->ip_idx]) < 0)
118 if (++lookup->ip_idx == result->ips_count) {
126 static void dns_lookup_save_msecs(struct dns_lookup *lookup)
134 diff = timeval_diff_msecs(&now, &lookup->start_time);
136 lookup->result.msecs = diff;
142 struct dns_lookup *lookup = client->head;
147 if (lookup == NULL) {
152 ret = dns_lookup_input_line(lookup, line);
162 if (ret != 0 && lookup->result.error != NULL) {
175 dns_lookup_save_msecs(lookup);
176 lookup->callback(&lookup->result, lookup->context);
177 retry = !lookup->client->deinit_client_at_free;
178 dns_lookup_free(&lookup);
184 static void dns_lookup_timeout(struct dns_lookup *lookup)
186 lookup->result.error = "DNS lookup timed out";
188 lookup->callback(&lookup->result, lookup->context);
189 dns_lookup_free(&lookup);
232 struct dns_lookup *lookup = *_lookup;
233 struct dns_client *client = lookup->client;
237 DLLIST2_REMOVE(&client->head, &client->tail, lookup);
238 timeout_remove(&lookup->to);
239 i_free(lookup->name);
240 i_free(lookup->ips);
248 i_free(lookup);
251 void dns_lookup_abort(struct dns_lookup **lookup)
253 dns_lookup_free(lookup);
256 void dns_lookup_switch_ioloop(struct dns_lookup *lookup)
258 if (lookup->to != NULL)
259 lookup->to = io_loop_move_timeout(&lookup->to);
260 if (lookup->client->deinit_client_at_free)
261 dns_client_switch_ioloop(lookup->client);
334 struct dns_lookup *lookup;
352 lookup = i_new(struct dns_lookup, 1);
353 lookup->client = client;
354 lookup->ptr_lookup = ptr_lookup;
356 lookup->to = timeout_add_to(client->ioloop,
358 dns_lookup_timeout, lookup);
360 lookup->result.ret = EAI_FAIL;
361 lookup->callback = callback;
362 lookup->context = context;
363 if (gettimeofday(&lookup->start_time, NULL) < 0)
367 DLLIST2_APPEND(&client->head, &client->tail, lookup);
368 *lookup_r = lookup;
392 struct dns_lookup *lookup;
402 for (lookup = client->head; lookup != NULL; lookup = lookup->next)
403 dns_lookup_switch_ioloop(lookup);