From: Wouter Wijngaards Date: Wed, 7 Nov 2012 08:49:53 +0000 (+0000) Subject: - Fixup ldns-testpkts, identical to ldns/examples. X-Git-Tag: release-1.4.19rc1~7 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4bc1bfeb204c59940eb937f3ce2297e0937cecda;p=thirdparty%2Funbound.git - Fixup ldns-testpkts, identical to ldns/examples. git-svn-id: file:///svn/unbound/trunk@2779 be551aaa-1e26-0410-a405-d3ace91eadb9 --- diff --git a/doc/Changelog b/doc/Changelog index cb800779b..db053c155 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +7 November 2012: Wouter + - Fixup ldns-testpkts, identical to ldns/examples. + 30 October 2012: Wouter - Fix bug #477: unbound-anchor segfaults if EDNS is blocked. diff --git a/testcode/ldns-testpkts.c b/testcode/ldns-testpkts.c index 7a6c020e8..be94eb2fe 100644 --- a/testcode/ldns-testpkts.c +++ b/testcode/ldns-testpkts.c @@ -426,7 +426,7 @@ get_origin(const char* name, int lineno, ldns_rdf** origin, char* parse) /* Reads one entry from file. Returns entry or NULL on error. */ struct entry* read_entry(FILE* in, const char* name, int *lineno, uint32_t* default_ttl, - ldns_rdf** origin, ldns_rdf** prev_rr) + ldns_rdf** origin, ldns_rdf** prev_rr, int skip_whitespace) { struct entry* current = NULL; char line[MAX_LINE]; @@ -507,14 +507,17 @@ read_entry(FILE* in, const char* name, int *lineno, uint32_t* default_ttl, /* it must be a RR, parse and add to packet. */ ldns_rr* n = NULL; ldns_status status; + char* rrstr = line; + if (skip_whitespace) + rrstr = parse; if(add_section == LDNS_SECTION_QUESTION) status = ldns_rr_new_question_frm_str( - &n, parse, *origin, prev_rr); - else status = ldns_rr_new_frm_str(&n, parse, + &n, rrstr, *origin, prev_rr); + else status = ldns_rr_new_frm_str(&n, rrstr, *default_ttl, *origin, prev_rr); if(status != LDNS_STATUS_OK) error("%s line %d:\n\t%s: %s", name, *lineno, - ldns_get_errorstr_by_id(status), parse); + ldns_get_errorstr_by_id(status), rrstr); ldns_pkt_push_rr(cur_reply->reply, add_section, n); } @@ -532,7 +535,7 @@ read_entry(FILE* in, const char* name, int *lineno, uint32_t* default_ttl, /* reads the canned reply file and returns a list of structs */ struct entry* -read_datafile(const char* name) +read_datafile(const char* name, int skip_whitespace) { struct entry* list = NULL; struct entry* last = NULL; @@ -549,7 +552,7 @@ read_datafile(const char* name) } while((current = read_entry(in, name, &lineno, &default_ttl, - &origin, &prev_rr))) + &origin, &prev_rr, skip_whitespace))) { if(last) last->next = current; diff --git a/testcode/ldns-testpkts.h b/testcode/ldns-testpkts.h index 59e428952..494152525 100644 --- a/testcode/ldns-testpkts.h +++ b/testcode/ldns-testpkts.h @@ -197,8 +197,9 @@ struct entry { /** * reads the canned reply file and returns a list of structs * does an exit on error. + * @param skip_withespace: skip leftside whitespace. */ -struct entry* read_datafile(const char* name); +struct entry* read_datafile(const char* name, int skip_whitespace); /** * Delete linked list of entries. @@ -217,10 +218,12 @@ void delete_entry(struct entry* list); * later it stores the $ORIGIN value last seen. Often &NULL or the zone * name on first call. * @param prev_rr: previous rr name for correcter parsing. &NULL on first call. + * @param skip_whitespace: skip leftside whitespace. * @return: The entry read (malloced) or NULL if no entry could be read. */ struct entry* read_entry(FILE* in, const char* name, int *lineno, - uint32_t* default_ttl, ldns_rdf** origin, ldns_rdf** prev_rr); + uint32_t* default_ttl, ldns_rdf** origin, ldns_rdf** prev_rr, + int skip_whitespace); /** * finds entry in list, or returns NULL. diff --git a/testcode/replay.c b/testcode/replay.c index 3d3aa01a0..2ce647da1 100644 --- a/testcode/replay.c +++ b/testcode/replay.c @@ -193,7 +193,7 @@ replay_range_read(char* remain, FILE* in, const char* name, int* lineno, /* set position before line; read entry */ (*lineno)--; fseeko(in, pos, SEEK_SET); - entry = read_entry(in, name, lineno, ttl, or, prev); + entry = read_entry(in, name, lineno, ttl, or, prev, 1); if(!entry) fatal_exit("%d: bad entry", *lineno); entry->next = NULL; @@ -393,7 +393,7 @@ replay_moment_read(char* remain, FILE* in, const char* name, int* lineno, } if(readentry) { - mom->match = read_entry(in, name, lineno, ttl, or, prev); + mom->match = read_entry(in, name, lineno, ttl, or, prev, 1); if(!mom->match) { free(mom); return NULL; diff --git a/testcode/unitverify.c b/testcode/unitverify.c index 5da664968..d3fbf25f5 100644 --- a/testcode/unitverify.c +++ b/testcode/unitverify.c @@ -298,7 +298,7 @@ verifytest_file(const char* fname, const char* at_date) struct alloc_cache alloc; ldns_buffer* buf = ldns_buffer_new(65535); struct entry* e; - struct entry* list = read_datafile(fname); + struct entry* list = read_datafile(fname, 1); struct module_env env; struct val_env ve; uint32_t now = time(NULL); @@ -342,7 +342,7 @@ dstest_file(const char* fname) struct alloc_cache alloc; ldns_buffer* buf = ldns_buffer_new(65535); struct entry* e; - struct entry* list = read_datafile(fname); + struct entry* list = read_datafile(fname, 1); struct module_env env; if(!list) @@ -475,7 +475,7 @@ nsec3_hash_test(const char* fname) struct alloc_cache alloc; ldns_buffer* buf = ldns_buffer_new(65535); struct entry* e; - struct entry* list = read_datafile(fname); + struct entry* list = read_datafile(fname, 1); if(!list) fatal_exit("could not read %s: %s", fname, strerror(errno));