chiark
/
gitweb
/
~mdw
/
adns
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
cname_loose/cname_forbid implemented; production timeout
[adns]
/
src
/
reply.c
diff --git
a/src/reply.c
b/src/reply.c
index ceeaceeeb4d7390523c9b734ae46946515fc3d7f..90314763f656b1f6a9cdaef4f08818b824593a83 100644
(file)
--- a/
src/reply.c
+++ b/
src/reply.c
@@
-111,22
+111,22
@@
void adns__procdgram(adns_state ads, const byte *dgram, int dglen,
break;
case rcode_formaterror:
adns__warn(ads,serv,qu,"server cannot understand our query (Format Error)");
break;
case rcode_formaterror:
adns__warn(ads,serv,qu,"server cannot understand our query (Format Error)");
- adns__query_fail(qu,adns_s_
serverfaulty
);
+ adns__query_fail(qu,adns_s_
rcodeformaterror
);
return;
case rcode_servfail:
return;
case rcode_servfail:
- adns__query_fail(qu,adns_s_servfail);
+ adns__query_fail(qu,adns_s_
rcode
servfail);
return;
case rcode_notimp:
adns__warn(ads,serv,qu,"server claims not to implement our query");
return;
case rcode_notimp:
adns__warn(ads,serv,qu,"server claims not to implement our query");
- adns__query_fail(qu,adns_s_notimplemented);
+ adns__query_fail(qu,adns_s_
rcode
notimplemented);
return;
case rcode_refused:
adns__warn(ads,serv,qu,"server refused our query");
return;
case rcode_refused:
adns__warn(ads,serv,qu,"server refused our query");
- adns__query_fail(qu,adns_s_refused);
+ adns__query_fail(qu,adns_s_r
coder
efused);
return;
default:
adns__warn(ads,serv,qu,"server gave unknown response code %d",rcode);
return;
default:
adns__warn(ads,serv,qu,"server gave unknown response code %d",rcode);
- adns__query_fail(qu,adns_s_r
eason
unknown);
+ adns__query_fail(qu,adns_s_r
code
unknown);
return;
}
return;
}
@@
-157,7
+157,10
@@
void adns__procdgram(adns_state ads, const byte *dgram, int dglen,
}
if (rrtype == adns_r_cname && /* fixme - implement adns_qf_nocname */
(qu->typei->type & adns__rrt_typemask) != adns_r_cname) {
}
if (rrtype == adns_r_cname && /* fixme - implement adns_qf_nocname */
(qu->typei->type & adns__rrt_typemask) != adns_r_cname) {
- if (!qu->cname_dgram) { /* Ignore second and subsequent CNAMEs */
+ if (qu->flags & adns_qf_cname_forbid) {
+ adns__query_fail(qu,adns_s_prohibitedcname);
+ return;
+ } else if (!qu->cname_dgram) { /* Ignore second and subsequent CNAMEs */
qu->cname_begin= rdstart;
qu->cname_dglen= dglen;
st= adns__parse_domain(ads,serv,qu, &qu->vb,
qu->cname_begin= rdstart;
qu->cname_dglen= dglen;
st= adns__parse_domain(ads,serv,qu, &qu->vb,
@@
-167,7
+170,7
@@
void adns__procdgram(adns_state ads, const byte *dgram, int dglen,
if (st) { adns__query_fail(qu,st); return; }
l= strlen(qu->vb.buf)+1;
qu->answer->cname= adns__alloc_interim(qu,l);
if (st) { adns__query_fail(qu,st); return; }
l= strlen(qu->vb.buf)+1;
qu->answer->cname= adns__alloc_interim(qu,l);
- if (!qu->answer->cname) { adns__query_fail(qu,adns_s_no
localmem
); return; }
+ if (!qu->answer->cname) { adns__query_fail(qu,adns_s_no
memory
); return; }
qu->cname_dgram= adns__alloc_mine(qu,dglen);
memcpy(qu->cname_dgram,dgram,dglen);
qu->cname_dgram= adns__alloc_mine(qu,dglen);
memcpy(qu->cname_dgram,dgram,dglen);
@@
-246,7
+249,7
@@
void adns__procdgram(adns_state ads, const byte *dgram, int dglen,
adns__query_fail(qu,adns_s_norecurse);
} else {
adns__diag(ads,serv,qu,"server claims to do recursion, but gave us a referral");
adns__query_fail(qu,adns_s_norecurse);
} else {
adns__diag(ads,serv,qu,"server claims to do recursion, but gave us a referral");
- adns__query_fail(qu,adns_s_
serverfaulty
);
+ adns__query_fail(qu,adns_s_
invalidresponse
);
}
return;
}
}
return;
}
@@
-254,7
+257,7
@@
void adns__procdgram(adns_state ads, const byte *dgram, int dglen,
/* Now, we have some RRs which we wanted. */
qu->answer->rrs.untyped= adns__alloc_interim(qu,qu->typei->rrsz*wantedrrs);
/* Now, we have some RRs which we wanted. */
qu->answer->rrs.untyped= adns__alloc_interim(qu,qu->typei->rrsz*wantedrrs);
- if (!qu->answer->rrs.untyped) { adns__query_fail(qu,adns_s_no
localmem
); return; }
+ if (!qu->answer->rrs.untyped) { adns__query_fail(qu,adns_s_no
memory
); return; }
typei= qu->typei;
cbyte= anstart;
typei= qu->typei;
cbyte= anstart;
@@
-268,6
+271,7
@@
void adns__procdgram(adns_state ads, const byte *dgram, int dglen,
pai.nsstart= nsstart;
pai.nscount= nscount;
pai.arcount= arcount;
pai.nsstart= nsstart;
pai.nscount= nscount;
pai.arcount= arcount;
+ pai.now= now;
for (rri=0, nrrs=0; rri<ancount; rri++) {
st= adns__findrr(qu,serv, dgram,dglen,&cbyte,
for (rri=0, nrrs=0; rri<ancount; rri++) {
st= adns__findrr(qu,serv, dgram,dglen,&cbyte,
@@
-300,7
+304,7
@@
void adns__procdgram(adns_state ads, const byte *dgram, int dglen,
if (!flg_tc) {
adns__diag(ads,serv,qu,"server sent datagram which points outside itself");
if (!flg_tc) {
adns__diag(ads,serv,qu,"server sent datagram which points outside itself");
- adns__query_fail(qu,adns_s_
serverfaulty
);
+ adns__query_fail(qu,adns_s_
invalidresponse
);
return;
}
qu->flags |= adns_qf_usevc;
return;
}
qu->flags |= adns_qf_usevc;
@@
-314,7
+318,7
@@
void adns__procdgram(adns_state ads, const byte *dgram, int dglen,
if (st) { adns__query_fail(qu,st); return; }
newquery= realloc(qu->query_dgram,qu->vb.used);
if (st) { adns__query_fail(qu,st); return; }
newquery= realloc(qu->query_dgram,qu->vb.used);
- if (!newquery) { adns__query_fail(qu,adns_s_no
localmem
); return; }
+ if (!newquery) { adns__query_fail(qu,adns_s_no
memory
); return; }
qu->query_dgram= newquery;
qu->query_dglen= qu->vb.used;
qu->query_dgram= newquery;
qu->query_dglen= qu->vb.used;