zone.lisp: TXT record data is always a list of strings.
[zone] / zone.lisp
index d71536c..633e0d4 100644 (file)
--- a/zone.lisp
+++ b/zone.lisp
        (ttl min-ttl)
        (serial (make-zone-serial zname)))
       (listify head)
-    (values zname
+    (values (string-downcase zname)
            (timespec-seconds ttl)
            (make-soa :admin admin
                      :source (zone-parse-host source zname)
   (rec :data (zone-parse-host data zname)))
 
 (defzoneparse :txt (name data rec)
-  ":txt TEXT"
-  (rec :data data))
+  ":txt (TEXT*)"
+  (rec :data (listify data)))
 
 (export '*dkim-pathname-defaults*)
 (defvar *dkim-pathname-defaults*
                       :ttl (zr-ttl zr) :data (zr-name zr))
                  (setf (gethash name seen) t))))))))))
 
-(defzoneparse (:multi) (name data rec :zname zname :ttl ttl)
+(defzoneparse :multi (name data rec :zname zname :ttl ttl)
   ":multi (((NET*) &key :start :end :family :suffix) . REC)
 
    Output multiple records covering a portion of the reverse-resolution
@@ -955,7 +955,8 @@ $TTL ~2@*~D~2%"
                    (setf (char copy at) #\.))
                  copy)))
       (format stream "~
-~A~30TIN SOA~40T~A ~A (
+~A~30TIN SOA~40T~A (
+~55@A~60T ;administrator
 ~45T~10D~60T ;serial
 ~45T~10D~60T ;refresh
 ~45T~10D~60T ;retry
@@ -1002,7 +1003,7 @@ $TTL ~2@*~D~2%"
     (cons "~2D ~2D ~A" data))
   (:method ((type (eql :txt)) data)
     (cons "~#[\"\"~;~S~:;(~@{~%~8T~S~} )~]"
-         (mapcar #'stringify (listify data)))))
+         (mapcar #'stringify data))))
 
 (defmethod bind-record (type zr)
   (destructuring-bind (format &rest args)