From: Miek Gieben Date: Wed, 5 Apr 2006 09:37:06 +0000 (+0000) Subject: correctly see $TTL again X-Git-Tag: release-1.1.0~252 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f3151f645ff46ec90d56e85e5e4fa32e33294da6;p=thirdparty%2Fldns.git correctly see $TTL again added extra status to say: seen TTL, haven't got an rr need parser for ttls: 1H -> 3600, not 1 --- diff --git a/error.c b/error.c index 658b73b0..ad0ac24d 100644 --- 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 } }; diff --git a/ldns/error.h b/ldns/error.h index 79ecc64a..c9552897 100644 --- a/ldns/error.h +++ b/ldns/error.h @@ -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 d11b8832..dc4803ed 100644 --- 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 7a8ef589..9117231a 100644 --- 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; }