chiark / gitweb /
Use struct sockaddr in several places; distinguish various places where
[adns.git] / src / parse.c
index 46d76fa29c1858570b6dcdd0d051bd782d44e9d8..722d9e4e763f3146e4bfb1baaaeb0d28022230d0 100644 (file)
@@ -111,7 +111,7 @@ adns_status adns__findlabel_next(findlabel_state *fls,
 }
 
 adns_status adns__parse_domain(adns_state ads, int serv, adns_query qu,
-                              vbuf *vb, int flags,
+                              vbuf *vb, adns_queryflags flags,
                               const byte *dgram, int dglen, int *cbyte_io, int max) {
   findlabel_state fls;
   
@@ -127,15 +127,16 @@ adns_status adns__parse_domain(adns_state ads, int serv, adns_query qu,
     if (!lablen) break;
     if (vb->used)
       if (!adns__vbuf_append(vb,".",1)) return adns_s_nolocalmem;
-    if (flags & adns_qf_anyquote) {
+    if (flags & pdf_quoteok) {
       if (!vbuf__append_quoted1035(vb,dgram+labstart,lablen))
        return adns_s_nolocalmem;
     } else {
-      if (!ctype_alpha(dgram[labstart])) return adns_s_invaliddomain;
+      ch= dgram[labstart];
+      if (!ctype_alpha(ch) && !ctype_digit(ch)) return adns_s_invalidanswerdomain;
       for (i= labstart+1; i<labstart+lablen; i++) {
        ch= dgram[i];
        if (ch != '-' && !ctype_alpha(ch) && !ctype_digit(ch))
-         return adns_s_invaliddomain;
+         return adns_s_invalidanswerdomain;
       }
       if (!adns__vbuf_append(vb,dgram+labstart,lablen))
        return adns_s_nolocalmem;