Skip to content

Commit 882ca3f

Browse files
committed
adns: fixes
1 parent dd47d74 commit 882ca3f

1 file changed

Lines changed: 9 additions & 2 deletions

File tree

lib/system/async-dns/async-dns-parse.c

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ lws_adns_iterate(lws_adns_q_t *q, const uint8_t *pkt, int len,
177177
{
178178
const uint8_t *e = pkt + len, *p, *pay;
179179
struct label_stack stack[8];
180-
int n = 0, stp = 0, ansc, m;
180+
int n = 0, stp = 0, ansc, m, found = 0;
181181
uint16_t rrtype, rrpaylen;
182182
char *sp, inq;
183183
uint32_t ttl;
@@ -204,7 +204,7 @@ lws_adns_iterate(lws_adns_q_t *q, const uint8_t *pkt, int len,
204204

205205
while (p + 14 < e && (inq || ansc)) {
206206

207-
if (!inq && !stp)
207+
if (!inq)
208208
ansc--;
209209

210210
/*
@@ -333,6 +333,7 @@ lws_adns_iterate(lws_adns_q_t *q, const uint8_t *pkt, int len,
333333
do_cb:
334334
#endif
335335
cb(stack[0].name, opaque, ttl, rrtype, rrpaylen, p);
336+
found++;
336337
break;
337338

338339
case LWS_ADNS_RECORD_CNAME:
@@ -403,6 +404,8 @@ lws_adns_iterate(lws_adns_q_t *q, const uint8_t *pkt, int len,
403404
*/
404405
// lwsl_notice("lws_adns_iterate: Calling CB for DNSSEC RR %d (len %d)\n", rrtype, rrpaylen);
405406
cb(stack[0].name, opaque, ttl, rrtype, rrpaylen, p);
407+
if (rrtype == LWS_ADNS_RECORD_HTTPS)
408+
found++;
406409
break;
407410

408411
default:
@@ -423,6 +426,9 @@ lws_adns_iterate(lws_adns_q_t *q, const uint8_t *pkt, int len,
423426
break;
424427
} while (1);
425428

429+
if (found)
430+
return 0; /* resolved from inside this response */
431+
426432
if (!stp || cb != lws_async_dns_estimate)
427433
return 1; /* we didn't find anything, but we didn't error */
428434

@@ -464,6 +470,7 @@ lws_adns_iterate(lws_adns_q_t *q, const uint8_t *pkt, int len,
464470
if (q->firstcache)
465471
lws_adns_cache_destroy(q->firstcache);
466472
q->firstcache = NULL;
473+
q->last = NULL; /* it pointed into the cache we just freed */
467474

468475
/* overwrite the query name with the CNAME */
469476

0 commit comments

Comments
 (0)