X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Ftransmit.c;h=e91250ab2895cb05267882949f9c124921fe664e;hb=c37d270aba4917429f1377e1148613b48d06aaaa;hp=6136bf9b6e981b85b9088d279a866cec9fe4cde1;hpb=d19b03d0267305c75f518c32a31424d2229fd06b;p=adns.git diff --git a/src/transmit.c b/src/transmit.c index 6136bf9..e91250a 100644 --- a/src/transmit.c +++ b/src/transmit.c @@ -4,12 +4,11 @@ * - send queries */ /* - * This file is - * Copyright (C) 1997-2000 Ian Jackson - * - * It is part of adns, which is - * Copyright (C) 1997-2000 Ian Jackson - * Copyright (C) 1999-2000 Tony Finch + * This file is part of adns, which is + * Copyright (C) 1997-2000,2003,2006 Ian Jackson + * 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 @@ -67,7 +66,7 @@ static adns_status mkquery_footer(vbuf *vb, adns_rrtype type) { byte *rqp; MKQUERY_START(vb); - MKQUERY_ADDW(type & adns__rrt_typemask); /* QTYPE */ + MKQUERY_ADDW(type & adns_rrt_typemask); /* QTYPE */ MKQUERY_ADDW(DNS_CLASS_IN); /* QCLASS=IN */ MKQUERY_STOP(vb); assert(vb->used <= vb->avail); @@ -75,11 +74,10 @@ static adns_status mkquery_footer(vbuf *vb, adns_rrtype type) { return adns_s_ok; } -adns_status adns__qdpl_normal(adns_state ads, - const char **p_io, const char *pe, int labelnum, - char label_r[], int *ll_io, - adns_queryflags flags, - const typeinfo *typei) { +static adns_status qdparselabel(adns_state ads, + const char **p_io, const char *pe, + char label_r[], int *ll_io, + adns_queryflags flags) { int ll, c; const char *p; @@ -103,13 +101,6 @@ adns_status adns__qdpl_normal(adns_state ads, return adns_s_querydomaininvalid; } } - if (!(flags & adns_qf_quoteok_query)) { - if (c == '-') { - if (!ll) return adns_s_querydomaininvalid; - } else if (!ctype_alpha(c) && !ctype_digit(c)) { - return adns_s_querydomaininvalid; - } - } if (ll == *ll_io) return adns_s_querydomaininvalid; label_r[ll++]= c; } @@ -121,8 +112,9 @@ adns_status adns__qdpl_normal(adns_state ads, adns_status adns__mkquery(adns_state ads, vbuf *vb, int *id_r, const char *owner, int ol, - const typeinfo *typei, adns_queryflags flags) { - int labelnum, ll, nbytes; + const typeinfo *typei, adns_rrtype type, + adns_queryflags flags) { + int ll, nbytes; byte label[255]; byte *rqp; const char *p, *pe; @@ -134,10 +126,9 @@ adns_status adns__mkquery(adns_state ads, vbuf *vb, int *id_r, p= owner; pe= owner+ol; nbytes= 0; - labelnum= 0; while (p!=pe) { ll= sizeof(label); - st= typei->qdparselabel(ads, &p,pe, labelnum++, label, &ll, flags, typei); + st= qdparselabel(ads, &p,pe, label, &ll, flags); if (st) return st; if (!ll) return adns_s_querydomaininvalid; if (ll > DNS_MAXLABEL) return adns_s_querydomaintoolong; @@ -150,7 +141,7 @@ adns_status adns__mkquery(adns_state ads, vbuf *vb, int *id_r, MKQUERY_STOP(vb); - st= mkquery_footer(vb,typei->type); + st= mkquery_footer(vb,type); return adns_s_ok; }