chiark / gitweb /
New spec for iterator functions.
[adns.git] / src / types.c
index e4e56f63859bd23e671dfb0e8d318bddc9d6eb8e..7e671fc9a98e779d5ae29fd4d9356dd0297b032c 100644 (file)
 #include <stdlib.h>
 #include <string.h>
 
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
 #include <arpa/inet.h>
 
 #include "internal.h"
 
 #define R_NOMEM           return adns_s_nomemory
-#define CSP_ADDSTR(s)     if (!adns__vbuf_appendstr(vb,(s))) R_NOMEM; else;
+#define CSP_ADDSTR(s)     do { if (!adns__vbuf_appendstr(vb,(s))) R_NOMEM; } while (0)
 
 /*
  * order of sections:
@@ -51,7 +54,7 @@
  * _strpair                   (mf,cs)
  * _intstrpair                (mf,cs)
  * _hinfo                     (pa)
- * _mailbox                   (pap)
+ * _mailbox                   (pap +pap_mailbox822)
  * _rp                        (pa)
  * _soa                       (pa,mf,cs)
  * _flat                      (mf)
@@ -469,7 +472,7 @@ static adns_status pap_hostaddr(const parseinfo *pai, int *cbyte_io,
   if (!(pai->qu->flags & adns_qf_cname_loose)) nflags |= adns_qf_cname_forbid;
   
   st= adns__internal_submit(pai->ads, &nqu, adns__findtype(adns_r_addr),
-                           &pai->qu->vb, id, nflags, pai->now, 0, &ctx);
+                           &pai->qu->vb, id, nflags, pai->now, &ctx);
   if (st) return st;
 
   nqu->parent= pai->qu;
@@ -712,7 +715,7 @@ static adns_status pa_ptr(const parseinfo *pai, int dmstart, int max, void *data
   memset(&ctx.info,0,sizeof(ctx.info));
   st= adns__internal_submit(pai->ads, &nqu, adns__findtype(adns_r_addr),
                            &pai->qu->vb, id,
-                           adns_qf_quoteok_query, pai->now, 0, &ctx);
+                           adns_qf_quoteok_query, pai->now, &ctx);
   if (st) return st;
 
   nqu->parent= pai->qu;
@@ -788,8 +791,8 @@ static adns_status pa_hinfo(const parseinfo *pai, int cbyte, int max, void *data
  * _mailbox   (pap)
  */
 
-static adns_status pap_mailbox(const parseinfo *pai, int *cbyte_io, int max,
-                              char **mb_r) {
+static adns_status pap_mailbox822(const parseinfo *pai, int *cbyte_io, int max,
+                                 char **mb_r) {
   int lablen, labstart, i, needquote, c, r, neednorm;
   const unsigned char *p;
   char *str;
@@ -844,6 +847,16 @@ static adns_status pap_mailbox(const parseinfo *pai, int *cbyte_io, int max,
   return adns_s_ok;
 }
 
+static adns_status pap_mailbox(const parseinfo *pai, int *cbyte_io, int max,
+                              char **mb_r) {
+  if (pai->qu->typei->type & adns__qtf_mail822) {
+    return pap_mailbox822(pai, cbyte_io, max, mb_r);
+  } else {
+    return pap_domain(pai, cbyte_io, max, mb_r,
+                     pai->qu->flags & adns_qf_quoteok_anshost ? pdf_quoteok : 0);
+  }
+}
+
 /*
  * _rp   (pa)
  */