- * Copyright (C) 1997-2000,2003,2006 Ian Jackson
+ * Copyright (C) 1997-2000,2003,2006,2014 Ian Jackson
+ * Copyright (C) 2014 Mark Wooding
* Copyright (C) 1999-2000,2003,2006 Tony Finch
* Copyright (C) 1991 Massachusetts Institute of Technology
* (See the file INSTALL for full details.)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* Copyright (C) 1999-2000,2003,2006 Tony Finch
* Copyright (C) 1991 Massachusetts Institute of Technology
* (See the file INSTALL for full details.)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * along with this program; if not, write to the Free Software Foundation.
- stat= adns__mkquery(ads,&qu->vb,&id, owner,ol,
+ st= adns__mkquery(ads,&qu->vb,&id, owner,ol,
- stat= check_domain_name(ads, flags,&qu->ctx,typei, qu->vb.buf,qu->vb.used);
- if (stat) { adns__query_fail(qu,stat); return; }
+ st= check_domain_name(ads, flags,&qu->ctx,typei, qu->vb.buf,qu->vb.used);
+ if (st) { adns__query_fail(qu,st); return; }
if (qu->search_pos >= ads->nsearchlist) {
if (qu->search_doneabs) {
qu->search_vb.used= qu->search_origlen;
if (qu->search_pos >= ads->nsearchlist) {
if (qu->search_doneabs) {
qu->search_vb.used= qu->search_origlen;
+ if (flags & ~(adns_queryflags)0x4009ffff)
+ /* 0x40080000 are reserved for `harmless' future expansion
+ * 0x00000020 used to be adns_qf_quoteok_cname, now the default;
+ * see also addrfam.c:textaddr_check_qf */
+ return ENOSYS;
+
- if (!ol) { stat= adns_s_querydomaininvalid; goto x_adnsfail; }
- if (ol>DNS_MAXDOMAIN+1) { stat= adns_s_querydomaintoolong; goto x_adnsfail; }
+ if (!ol) { st= adns_s_querydomaininvalid; goto x_adnsfail; }
+ if (ol>DNS_MAXDOMAIN+1) { st= adns_s_querydomaintoolong; goto x_adnsfail; }
if (flags & adns_qf_search) {
r= adns__vbuf_append(&qu->search_vb,owner,ol);
if (flags & adns_qf_search) {
r= adns__vbuf_append(&qu->search_vb,owner,ol);
for (ndots=0, p=owner; (p= strchr(p,'.')); p++, ndots++);
qu->search_doneabs= (ndots >= ads->searchndots) ? -1 : 0;
for (ndots=0, p=owner; (p= strchr(p,'.')); p++, ndots++);
qu->search_doneabs= (ndots >= ads->searchndots) ? -1 : 0;
adns__search_next(ads,qu,now);
} else {
if (flags & adns_qf_owner) {
adns__search_next(ads,qu,now);
} else {
if (flags & adns_qf_owner) {
}
query_simple(ads,qu, owner,ol, typei,flags, now);
}
}
query_simple(ads,qu, owner,ol, typei,flags, now);
}
if (!an) return;
assert(!qu->final_allocspace);
LIST_UNLINK(qu->allocations, an);
free(an);
qu->interim_allocd -= sz;
if (!an) return;
assert(!qu->final_allocspace);
LIST_UNLINK(qu->allocations, an);
free(an);
qu->interim_allocd -= sz;