chiark
/
gitweb
/
~mdw
/
adns
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
bcfd6f1
)
Fold expiry-time tracking into append_addrs.
author
Mark Wooding
<mdw@distorted.org.uk>
Mon, 12 May 2014 09:15:06 +0000
(10:15 +0100)
committer
Mark Wooding
<mdw@distorted.org.uk>
Mon, 12 May 2014 09:15:06 +0000
(10:15 +0100)
src/types.c
patch
|
blob
|
blame
|
history
diff --git
a/src/types.c
b/src/types.c
index 020b6457f297d3437235f1b500c02ac28242bd1a..0f672bf0bba0aad97a05bb9631e6ab735f8b8376 100644
(file)
--- a/
src/types.c
+++ b/
src/types.c
@@
-482,7
+482,7
@@
static size_t addr_rrsz(adns_query qu)
sizeof(adns_rr_addr) : sizeof(adns_rr_addr_v4only);
}
sizeof(adns_rr_addr) : sizeof(adns_rr_addr_v4only);
}
-static adns_status append_addrs(adns_query qu, size_t rrsz,
+static adns_status append_addrs(adns_query qu,
adns_query from,
size_t rrsz,
adns_rr_addr **dp, int *dlen,
const adns_rr_addr *sp, int slen)
{
adns_rr_addr **dp, int *dlen,
const adns_rr_addr *sp, int slen)
{
@@
-496,6
+496,7
@@
static adns_status append_addrs(adns_query qu, size_t rrsz,
memcpy(p + drrsz, sp, srrsz);
*dlen += slen;
*dp = (adns_rr_addr *)p;
memcpy(p + drrsz, sp, srrsz);
*dlen += slen;
*dp = (adns_rr_addr *)p;
+ if (from && qu->expires > from->expires) qu->expires = from->expires;
return adns_s_ok;
}
return adns_s_ok;
}
@@
-528,13
+529,11
@@
static void icb_addr(adns_query parent, adns_query child)
}
assert(pans->rrsz == cans->rrsz);
}
assert(pans->rrsz == cans->rrsz);
- err = append_addrs(parent, pans->rrsz,
+ err = append_addrs(parent,
child,
pans->rrsz,
&pans->rrs.addr, &pans->nrrs,
cans->rrs.addr, cans->nrrs);
if (err) { adns__query_fail(parent, err); return; }
&pans->rrs.addr, &pans->nrrs,
cans->rrs.addr, cans->nrrs);
if (err) { adns__query_fail(parent, err); return; }
- if (parent->expires > child->expires) parent->expires = child->expires;
-
if (parent->children.head) LIST_LINK_TAIL(ads->childw, parent);
else if (!pans->nrrs) adns__query_fail(parent, adns_s_nodata);
else adns__query_done(parent);
if (parent->children.head) LIST_LINK_TAIL(ads->childw, parent);
else if (!pans->nrrs) adns__query_fail(parent, adns_s_nodata);
else adns__query_done(parent);
@@
-724,7
+723,7
@@
static adns_status pap_findaddrs(const parseinfo *pai, adns_rr_hostaddr *ha,
naddrs++;
}
if (naddrs > 0) {
naddrs++;
}
if (naddrs > 0) {
- st = append_addrs(pai->qu, addrsz, &ha->addrs, &ha->naddrs,
+ st = append_addrs(pai->qu,
0,
addrsz, &ha->addrs, &ha->naddrs,
(const adns_rr_addr *)pai->qu->vb.buf, naddrs);
if (st) return st;
ha->astatus= adns_s_ok;
(const adns_rr_addr *)pai->qu->vb.buf, naddrs);
if (st) return st;
ha->astatus= adns_s_ok;
@@
-749,8
+748,7
@@
static void icb_hostaddr(adns_query parent, adns_query child) {
if (st) goto done;
assert(addrsz == cans->rrsz);
if (st) goto done;
assert(addrsz == cans->rrsz);
- if (parent->expires > child->expires) parent->expires = child->expires;
- st = append_addrs(parent, addrsz,
+ st = append_addrs(parent, child, addrsz,
&rrp->addrs, &rrp->naddrs,
cans->rrs.addr, cans->nrrs);
if (st) goto done;
&rrp->addrs, &rrp->naddrs,
cans->rrs.addr, cans->nrrs);
if (st) goto done;