Lines Matching refs:dns

26 #include "private-lib-async-dns.h"
46 lws_adns_get_query(lws_async_dns_t *dns, adns_query_type_t qtype,
63 if (owner == &dns->cached) {
66 lws_dll2_add_head(&q->list, &dns->cached);
114 lwsl_wsi_debug(q->dns ? q->dns->wsi : NULL, "q: %p, c: %p, refcount %d -> %d",
123 lws_adns_dump(q->dns);
133 lwsl_wsi_info(q->dns ? q->dns->wsi : NULL, "in");
134 lws_adns_dump(q->dns);
136 if (q->dns && q->dns->wsi) {
138 lws_callback_on_writable(q->dns->wsi);
182 * our policy is to force reloading the dns server info
255 lwsl_wsi_notice(wsi, "dns write failed %d %d errno %d",
289 struct lws_async_dns *dns = &(lws_get_context(wsi)->async_dns);
306 lws_adns_parse_udp(dns, in, len);
312 dns->waiting.head) {
330 "lws-async-dns", callback_async_dns, 0, 0, 0, NULL, 0
336 lws_async_dns_t *dns = &context->async_dns;
340 if (dns->wsi)
348 memset(&dns->sa46, 0, sizeof(dns->sa46));
351 if (lws_dhcpc_status(context, &dns->sa46))
355 n = lws_plat_asyncdns_init(context, &dns->sa46);
357 lwsl_cx_warn(context, "no valid dns server, retry");
368 dns->sa46.sa4.sin_port = htons(53);
369 lws_write_numeric_address((uint8_t *)&dns->sa46.sa4.sin_addr.s_addr, 4,
372 dns->wsi = lws_create_adopt_udp(context->vhost_list, ads, 53, 0,
375 if (!dns->wsi) {
380 context->async_dns.wsi->udp->sa46 = dns->sa46;
382 dns->dns_server_set = 1;
388 lws_adns_get_cache(lws_async_dns_t *dns, const char *name)
398 lws_dll2_get_head(&dns->cached)) {
401 // lwsl_wsi_notice(dns->wsi, "%s vs %s (inc %d)", name, c->name, c->incomplete);
406 lws_dll2_add_head(&c->list, &dns->cached);
417 lws_adns_dump(lws_async_dns_t *dns)
421 if (!dns)
424 lwsl_wsi_info(dns->wsi, "ADNS cache %u entries",
425 (unsigned int)dns->cached.count);
428 lws_dll2_get_head(&dns->cached)) {
431 lwsl_wsi_info(dns->wsi, "cache: '%s', exp: %lldus, incomp %d, "
438 lws_dll2_get_head(&dns->waiting)) {
441 lwsl_wsi_info(dns->wsi, "q: '%s', sent %d, resp %d",
485 lwsl_wsi_info(q->dns ? q->dns->wsi : NULL, "failing");
486 lws_adns_dump(q->dns);
524 lws_async_dns_trim_cache(lws_async_dns_t *dns)
528 if (dns->cached.count + 1< MAX_CACHE_ENTRIES)
531 c1 = lws_container_of(lws_dll2_get_tail(&dns->cached),
534 lwsl_wsi_info(dns->wsi, "acache %p: refcount %d on purge",
550 lws_async_dns_deinit(lws_async_dns_t *dns)
552 lws_dll2_foreach_safe(&dns->waiting, NULL, clean);
553 lws_dll2_foreach_safe(&dns->cached, NULL, cache_clean);
555 if (dns->wsi && !dns->dns_server_connected) {
556 lwsl_wsi_notice(dns->wsi, "late free of incomplete dns wsi");
557 __lws_lc_untag(dns->wsi->a.context, &dns->wsi->lc);
559 lws_metrics_tags_destroy(&dns->wsi->cal_conn.mtags_owner);
561 lws_free_set_NULL(dns->wsi->udp);
562 lws_free_set_NULL(dns->wsi);
590 lws_async_dns_t *dns = &wsi->a.context->async_dns;
592 lws_dll2_foreach_safe(&dns->waiting, wsi, cancel);
614 lws_async_dns_t *dns = &context->async_dns;
626 if (lws_dll2_foreach_safe(&dns->waiting,
652 lws_async_dns_t *dns = &context->async_dns;
664 lws_adns_dump(dns);
700 c = lws_adns_get_cache(dns, name);
724 * It's a 1.2.3.4 or ::1 type IP address already? We don't need a dns
737 lws_async_dns_trim_cache(dns);
763 lws_dll2_add_head(&c->list, &dns->cached);
767 lws_adns_dump(dns);
808 q = lws_adns_get_query(dns, qtype, &dns->waiting, 0, name);
810 lwsl_cx_debug(context, "dns piggybacking: %d:%s",
858 q->dns = dns;
864 if (lws_retry_sul_schedule_retry_wsi(dns->wsi, &q->sul,
885 lws_callback_on_writable(dns->wsi);
887 lws_dll2_add_head(&q->list, &dns->waiting);
894 lws_adns_dump(dns);