Lines Matching refs:q
35 lws_adns_q_destroy(lws_adns_q_t *q) in lws_adns_q_destroy() argument
37 lws_metrics_caliper_report(q->metcal, (char)q->go_nogo); in lws_adns_q_destroy()
39 lws_sul_cancel(&q->sul); in lws_adns_q_destroy()
40 lws_sul_cancel(&q->write_sul); in lws_adns_q_destroy()
41 lws_dll2_remove(&q->list); in lws_adns_q_destroy()
42 lws_free(q); in lws_adns_q_destroy()
51 lws_adns_q_t *q = lws_container_of(d, lws_adns_q_t, list); in lws_adns_get_query() local
52 int n = 0, nmax = q->tids >= LWS_ARRAY_SIZE(q->tid) ? in lws_adns_get_query()
53 LWS_ARRAY_SIZE(q->tid) : q->tids; in lws_adns_get_query()
57 if ((tid & 0xfffe) == (q->tid[n] & 0xfffe)) in lws_adns_get_query()
58 return q; in lws_adns_get_query()
60 if (name && q->qtype == ((tid & 1) ? LWS_ADNS_RECORD_AAAA : in lws_adns_get_query()
62 !strcasecmp(name, (const char *)&q[1])) { in lws_adns_get_query()
65 lws_dll2_remove(&q->list); in lws_adns_get_query()
66 lws_dll2_add_head(&q->list, &dns->cached); in lws_adns_get_query()
69 return q; in lws_adns_get_query()
86 lws_async_dns_complete(lws_adns_q_t *q, lws_adns_cache_t *c) in lws_async_dns_complete() argument
90 lws_dll2_get_head(&q->wsi_adns)) { in lws_async_dns_complete()
96 q, c, c->refcount, c->refcount + 1); in lws_async_dns_complete()
103 if (w->adns_cb(w, (const char *)&q[1], c ? c->results : NULL, 0, in lws_async_dns_complete()
104 q->opaque) == NULL) in lws_async_dns_complete()
112 if (q->standalone_cb) { in lws_async_dns_complete()
114 lwsl_wsi_debug(q->dns ? q->dns->wsi : NULL, "q: %p, c: %p, refcount %d -> %d", in lws_async_dns_complete()
115 q, c, c->refcount, c->refcount + 1); in lws_async_dns_complete()
119 q->standalone_cb(NULL, (const char *)&q[1], in lws_async_dns_complete()
120 c ? c->results : NULL, 0, q->opaque); in lws_async_dns_complete()
123 lws_adns_dump(q->dns); in lws_async_dns_complete()
131 lws_adns_q_t *q = lws_container_of(sul, lws_adns_q_t, sul); in lws_async_dns_sul_cb_retry() local
133 lwsl_wsi_info(q->dns ? q->dns->wsi : NULL, "in"); in lws_async_dns_sul_cb_retry()
134 lws_adns_dump(q->dns); in lws_async_dns_sul_cb_retry()
136 if (q->dns && q->dns->wsi) { in lws_async_dns_sul_cb_retry()
137 q->is_retry = 1; in lws_async_dns_sul_cb_retry()
138 lws_callback_on_writable(q->dns->wsi); in lws_async_dns_sul_cb_retry()
143 lws_async_dns_writeable(struct lws *wsi, lws_adns_q_t *q) in lws_async_dns_writeable() argument
153 lws_sul_cancel(&q->write_sul); in lws_async_dns_writeable()
155 if (!q->is_retry && q->sent[0] in lws_async_dns_writeable()
157 && q->sent[0] == q->sent[1] in lws_async_dns_writeable()
162 q->is_retry = 0; in lws_async_dns_writeable()
176 if (lws_dll2_is_detached(&q->sul.list) && in lws_async_dns_writeable()
177 lws_retry_sul_schedule_retry_wsi(wsi, &q->sul, in lws_async_dns_writeable()
178 lws_async_dns_sul_cb_retry, &q->retry)) { in lws_async_dns_writeable()
187 lws_async_dns_drop_server(q->context); in lws_async_dns_writeable()
191 name = (const char *)&q[1]; in lws_async_dns_writeable()
197 if (!q->responded) { in lws_async_dns_writeable()
199 which = q->sent[0] >= q->sent[1]; in lws_async_dns_writeable()
200 q->sent[which]++; in lws_async_dns_writeable()
201 q->asked = 3; /* want results for 4 & 6 before done */ in lws_async_dns_writeable()
203 which = q->responded & 1; in lws_async_dns_writeable()
206 q->asked = 1; in lws_async_dns_writeable()
215 which ? (LADNS_MOST_RECENT_TID(q) | 1) : in lws_async_dns_writeable()
217 LADNS_MOST_RECENT_TID(q)); in lws_async_dns_writeable()
261 if (!q->responded && q->sent[0] != q->sent[1]) { in lws_async_dns_writeable()
276 if (q->firstcache) { in lws_async_dns_writeable()
278 lws_adns_cache_destroy(q->firstcache); in lws_async_dns_writeable()
279 q->firstcache = NULL; in lws_async_dns_writeable()
281 lws_async_dns_complete(q, NULL); in lws_async_dns_writeable()
282 lws_adns_q_destroy(q); in lws_async_dns_writeable()
313 lws_adns_q_t *q = lws_container_of(d, lws_adns_q_t, in callback_async_dns() local
317 (!q->asked || q->responded != q->asked)) in callback_async_dns()
318 lws_async_dns_writeable(wsi, q); in callback_async_dns()
439 lws_adns_q_t *q = lws_container_of(d, lws_adns_q_t, list); in lws_adns_dump() local
442 (const char *)&q[1], q->sent[0], in lws_adns_dump()
443 q->responded); in lws_adns_dump()
477 lws_adns_q_t *q = lws_container_of(sul, lws_adns_q_t, write_sul); in sul_cb_write() local
485 lwsl_wsi_info(q->dns ? q->dns->wsi : NULL, "failing"); in sul_cb_write()
486 lws_adns_dump(q->dns); in sul_cb_write()
488 lws_async_dns_complete(q, NULL); /* no cache to relate to */ in sul_cb_write()
489 lws_adns_q_destroy(q); in sul_cb_write()
570 lws_adns_q_t *q = lws_container_of(d, lws_adns_q_t, list); in cancel() local
573 lws_dll2_get_head(&q->wsi_adns)) { in cancel()
578 if (!q->wsi_adns.count) in cancel()
579 lws_adns_q_destroy(q); in cancel()
599 lws_adns_q_t *q = lws_container_of(d, lws_adns_q_t, list); in check_tid() local
600 int n = 0, nmax = q->tids >= LWS_ARRAY_SIZE(q->tid) ? in check_tid()
601 LWS_ARRAY_SIZE(q->tid) : q->tids; in check_tid()
605 if (check == q->tid[n]) in check_tid()
612 lws_async_dns_get_new_tid(struct lws_context *context, lws_adns_q_t *q) in lws_async_dns_get_new_tid() argument
630 q->tids++; in lws_async_dns_get_new_tid()
631 LADNS_MOST_RECENT_TID(q) = tid; in lws_async_dns_get_new_tid()
658 lws_adns_q_t *q; in lws_async_dns_query() local
808 q = lws_adns_get_query(dns, qtype, &dns->waiting, 0, name); in lws_async_dns_query()
809 if (q) { in lws_async_dns_query()
813 lws_dll2_add_head(&wsi->adns, &q->wsi_adns); in lws_async_dns_query()
838 q = (lws_adns_q_t *)lws_malloc(sizeof(*q) + DNS_MAX + nlen + 1, in lws_async_dns_query()
840 if (!q) in lws_async_dns_query()
842 memset(q, 0, sizeof(*q)); in lws_async_dns_query()
845 lws_dll2_add_head(&wsi->adns, &q->wsi_adns); in lws_async_dns_query()
847 q->qtype = (uint16_t)qtype; in lws_async_dns_query()
849 if (lws_async_dns_get_new_tid(context, q)) { in lws_async_dns_query()
854 LADNS_MOST_RECENT_TID(q) &= 0xfffe; in lws_async_dns_query()
855 q->context = context; in lws_async_dns_query()
856 q->tsi = (uint8_t)tsi; in lws_async_dns_query()
857 q->opaque = opaque; in lws_async_dns_query()
858 q->dns = dns; in lws_async_dns_query()
861 q->standalone_cb = cb; in lws_async_dns_query()
864 if (lws_retry_sul_schedule_retry_wsi(dns->wsi, &q->sul, in lws_async_dns_query()
865 lws_async_dns_sul_cb_retry, &q->retry)) in lws_async_dns_query()
869 lws_sul_schedule(context, 0, &q->write_sul, sul_cb_write, LWS_US_PER_SEC); in lws_async_dns_query()
877 p = (char *)&q[1]; in lws_async_dns_query()
887 lws_dll2_add_head(&q->list, &dns->waiting); in lws_async_dns_query()
889 lws_metrics_caliper_bind(q->metcal, context->mt_conn_dns); in lws_async_dns_query()
890 q->go_nogo = METRES_NOGO; in lws_async_dns_query()