chiark / gitweb /
+ * Treat 8-bit characters in email addrs as RFC822 `special' (=> quote).
[adns.git] / src / types.c
index f7c181076655abaf585460a5160a6be78878dc07..b1fdae79f93eefd6fd1500465e486058cbbac73c 100644 (file)
@@ -3,7 +3,12 @@
  * - RR-type-specific code, and the machinery to call it
  */
 /*
- *  This file is part of adns, which is Copyright (C) 1997-1999 Ian Jackson
+ *  This file is
+ *    Copyright (C) 1997-1999 Ian Jackson <ian@davenant.greenend.org.uk>
+ *
+ *  It is part of adns, which is
+ *    Copyright (C) 1997-2000 Ian Jackson <ian@davenant.greenend.org.uk>
+ *    Copyright (C) 1999-2000 Tony Finch <dot@dotat.at>
  *  
  *  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
@@ -547,14 +552,20 @@ static void mf_hostaddr(adns_query qu, void *datap) {
 static adns_status csp_hostaddr(vbuf *vb, const adns_rr_hostaddr *rrp) {
   const char *errstr;
   adns_status st;
+  char buf[20];
   int i;
 
   st= csp_domain(vb,rrp->host);  if (st) return st;
 
   CSP_ADDSTR(" ");
-  CSP_ADDSTR(adns_errabbrev(rrp->astatus));
+  CSP_ADDSTR(adns_errtypeabbrev(rrp->astatus));
 
+  sprintf(buf," %d ",rrp->astatus);
+  CSP_ADDSTR(buf);
+
+  CSP_ADDSTR(adns_errabbrev(rrp->astatus));
   CSP_ADDSTR(" ");
+
   errstr= adns_strerror(rrp->astatus);
   st= csp_qstring(vb,errstr,strlen(errstr));  if (st) return st;
   
@@ -840,7 +851,7 @@ static adns_status pap_mailbox822(const parseinfo *pai, int *cbyte_io, int max,
     c= *p++;
     if ((c&~128) < 32 || (c&~128) == 127) return adns_s_invaliddata;
     if (c == '.' && !neednorm) neednorm= 1;
-    else if (c==' ' || ctype_822special(c)) needquote++;
+    else if (c==' ' || c>=127 || ctype_822special(c)) needquote++;
     else neednorm= 0;
   }