]> git.ipfire.org Git - thirdparty/ldns.git/commitdiff
correctly see $TTL again
authorMiek Gieben <miekg@NLnetLabs.nl>
Wed, 5 Apr 2006 09:37:06 +0000 (09:37 +0000)
committerMiek Gieben <miekg@NLnetLabs.nl>
Wed, 5 Apr 2006 09:37:06 +0000 (09:37 +0000)
added extra status to say: seen TTL, haven't got an rr

need parser for ttls: 1H -> 3600, not 1

error.c
ldns/error.h
rr.c
zone.c

diff --git a/error.c b/error.c
index 658b73b03441fe73c06f8b64cadd76857ef6b87f..ad0ac24d241571df5ead90856ddc92ecc4de5360 100644 (file)
--- a/error.c
+++ b/error.c
@@ -69,6 +69,7 @@ ldns_lookup_table ldns_error_str[] = {
        { LDNS_STATUS_SYNTAX_VERSION_ERR, "Syntax error, version mismatch" },
        { LDNS_STATUS_SYNTAX_ALG_ERR, "Syntax error, algorithm unknown or non parseable" },
        { LDNS_STATUS_SYNTAX_ERR, "Syntax error, could not parse the RR" },
+       { LDNS_STATUS_SYNTAX_TTL, "A $TTL directive was seen in a zone" },
        { 0, NULL }
 };
 
index 79ecc64abe269392a50f659fcee95daa6f9c221c..c9552897079ebc962b82901b9e4ab3b5336188c3 100644 (file)
@@ -73,6 +73,7 @@ enum ldns_enum_status
         LDNS_STATUS_SYNTAX_VERSION_ERR,
         LDNS_STATUS_SYNTAX_ALG_ERR,
         LDNS_STATUS_SYNTAX_KEYWORD_ERR,
+        LDNS_STATUS_SYNTAX_TTL,
         LDNS_STATUS_SYNTAX_ERR
 };
 typedef enum ldns_enum_status ldns_status;
diff --git a/rr.c b/rr.c
index d11b883221b846f6821bb1d142b305566e330ee2..dc4803ed9df5bc9ccc711d7fbaeb2940bdd0cdb3 100644 (file)
--- a/rr.c
+++ b/rr.c
@@ -517,6 +517,7 @@ ldns_rr_new_frm_fp_l(ldns_rr **newrr, FILE *fp, uint16_t *default_ttl, ldns_rdf
        } else if ((keyword = strstr(line, "$TTL "))) {
                if (default_ttl) {
                        *default_ttl = (uint16_t) atoi(keyword + 5);
+                       return LDNS_STATUS_SYNTAX_TTL;
                }
        } else {
                if (origin && *origin) {
diff --git a/zone.c b/zone.c
index 7a8ef589bb42b5d6c9c31ad37b250fcaa7440cde..9117231a3c4bf870060447fc3b67b7a275247833 100644 (file)
--- a/zone.c
+++ b/zone.c
@@ -181,8 +181,9 @@ ldns_zone_new_frm_fp_l(ldns_zone **z, FILE *fp, ldns_rdf *origin, uint16_t ttl,
        }
 
        while(!feof(fp)) {
-               if ((s = ldns_rr_new_frm_fp_l(&rr, fp, &my_ttl, &my_origin, &my_prev, line_nr))
-                               == LDNS_STATUS_OK) {
+               s = ldns_rr_new_frm_fp_l(&rr, fp, &my_ttl, &my_origin, &my_prev, line_nr);
+               switch (s) {
+               case LDNS_STATUS_OK:
                        if (ldns_rr_get_type(rr) == LDNS_RR_TYPE_SOA) {
                                if (soa_seen) {
                                        /* second SOA 
@@ -208,8 +209,10 @@ ldns_zone_new_frm_fp_l(ldns_zone **z, FILE *fp, ldns_rdf *origin, uint16_t ttl,
                        /*my_origin = ldns_rr_owner(rr);*/
                        my_ttl    = ldns_rr_ttl(rr);
                        my_class  = ldns_rr_get_class(rr);
-                       
-               } else {
+               case LDNS_STATUS_SYNTAX_TTL:
+                       /* the function set the ttl */
+                       break;
+               default:
                        ldns_zone_free(newzone);
                        return s;
                }