chiark
/
gitweb
/
~mdw
/
adns
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
src/, regress/: Prepare for early failures in PTR queries.
[adns]
/
src
/
query.c
diff --git
a/src/query.c
b/src/query.c
index a3ce68d8051aa7c821af959c0cbf9e19e53ad378..dd2a47a6b0851001771f05e599860cd8709424b6 100644
(file)
--- a/
src/query.c
+++ b/
src/query.c
@@
-294,7
+294,17
@@
int adns_submit(adns_state ads,
ol--;
}
ol--;
}
+/* temporary hack */
+#define CHECK_PTR do { \
+ if (type == adns_r_ptr && (ol < 5 || \
+ strncmp(owner + ol - 5, ".arpa", 5))) { \
+ ads->nextid++; adns__autosys(ads,now); \
+ stat= adns_s_querydomainwrong; goto x_adnsfail; \
+ } \
+} while (0)
+
if (flags & adns_qf_search) {
if (flags & adns_qf_search) {
+ CHECK_PTR;
r= adns__vbuf_append(&qu->search_vb,owner,ol);
if (!r) { stat= adns_s_nomemory; goto x_adnsfail; }
r= adns__vbuf_append(&qu->search_vb,owner,ol);
if (!r) { stat= adns_s_nomemory; goto x_adnsfail; }
@@
-306,12
+316,15
@@
int adns_submit(adns_state ads,
if (flags & adns_qf_owner) {
if (!save_owner(qu,owner,ol)) { stat= adns_s_nomemory; goto x_adnsfail; }
}
if (flags & adns_qf_owner) {
if (!save_owner(qu,owner,ol)) { stat= adns_s_nomemory; goto x_adnsfail; }
}
+ CHECK_PTR;
query_simple(ads,qu, owner,ol, typei,flags, now);
}
adns__autosys(ads,now);
adns__consistency(ads,qu,cc_entex);
return 0;
query_simple(ads,qu, owner,ol, typei,flags, now);
}
adns__autosys(ads,now);
adns__consistency(ads,qu,cc_entex);
return 0;
+#undef CHECK_PTR
+
x_adnsfail:
adns__query_fail(qu,stat);
adns__consistency(ads,qu,cc_entex);
x_adnsfail:
adns__query_fail(qu,stat);
adns__consistency(ads,qu,cc_entex);