chiark / gitweb /
+ * Treat 8-bit characters in email addrs as RFC822 `special' (=> quote).
[adns.git] / src / types.c
index 5cc2d15a45681d21832f61b81d25c07e23217661..b1fdae79f93eefd6fd1500465e486058cbbac73c 100644 (file)
@@ -7,8 +7,8 @@
  *    Copyright (C) 1997-1999 Ian Jackson <ian@davenant.greenend.org.uk>
  *
  *  It is part of adns, which is
- *    Copyright (C) 1997-1999 Ian Jackson <ian@davenant.greenend.org.uk>
- *    Copyright (C) 1999 Tony Finch <dot@dotat.at>
+ *    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
@@ -552,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;
   
@@ -845,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;
   }