From: Wouter Wijngaards Date: Mon, 15 Oct 2007 14:19:17 +0000 (+0000) Subject: Fixup compression, and test for byteformat compression results. X-Git-Tag: release-0.6~68 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=aecdb781fcb1acf68b79879500e6abcfd677eeb3;p=thirdparty%2Funbound.git Fixup compression, and test for byteformat compression results. git-svn-id: file:///svn/unbound/trunk@676 be551aaa-1e26-0410-a405-d3ace91eadb9 --- diff --git a/daemon/worker.c b/daemon/worker.c index 7ed290d49..c4f795383 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -662,7 +662,8 @@ worker_handle_request(struct comm_point* c, void* arg, int error, struct edns_data edns; if(error != NETEVENT_NOERROR) { - log_err("handle request called with err=%d", error); + /* some bad tcp query DNS formats give these error calls */ + verbose(VERB_ALGO, "handle request called with err=%d", error); return 0; } if((ret=worker_check_request(c->buffer, worker)) != 0) { diff --git a/doc/Changelog b/doc/Changelog index 604f0200c..d33539d5f 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,9 @@ 15 October 2007: Wouter - nicer warning. - fix IP6 TCP, wrong definition check. With test package. + - fixup the fact that the query section was not compressed to, + the code was there but was called by value instead of by reference. + And test for the case, uses xxd and nc. 8 October 2007: Wouter - --disable-rpath option in configure for 64bit systems with diff --git a/testcode/do-tests.sh b/testcode/do-tests.sh index 2685caea1..b8a7170b0 100755 --- a/testcode/do-tests.sh +++ b/testcode/do-tests.sh @@ -3,6 +3,8 @@ NEED_SPLINT='00-lint.tpkg' NEED_DOXYGEN='01-doc.tpkg' NEED_LDNS_TESTNS='fwd_no_edns.tpkg fwd_tcp_tc.tpkg fwd_tcp.tpkg fwd_three_service.tpkg fwd_three.tpkg fwd_ttlexpire.tpkg fwd_udp.tpkg' +NEED_XXD='fwd_compress_c00c.tpkg' +NEED_NC='fwd_compress_c00c.tpkg' cd testdata; sh ../testcode/mini_tpkg.sh clean @@ -23,6 +25,16 @@ for test in `ls *.tpkg`; do SKIP=1; fi fi + if echo $NEED_XXD | grep $test >/dev/null; then + if test ! -x "`which xxd`"; then + SKIP=1; + fi + fi + if echo $NEED_NC | grep $test >/dev/null; then + if test ! -x "`which nc`"; then + SKIP=1; + fi + fi if test $SKIP -eq 0; then echo $test sh ../testcode/mini_tpkg.sh -a ../.. exe $test diff --git a/testdata/fwd_compress_c00c.tpkg b/testdata/fwd_compress_c00c.tpkg new file mode 100644 index 000000000..9e6b85244 Binary files /dev/null and b/testdata/fwd_compress_c00c.tpkg differ diff --git a/util/data/msgencode.c b/util/data/msgencode.c index 4d199ef05..fdba17304 100644 --- a/util/data/msgencode.c +++ b/util/data/msgencode.c @@ -573,13 +573,13 @@ insert_section(struct reply_info* rep, size_t num_rrsets, uint16_t* num_rrs, /** store query section in wireformat buffer, return RETVAL */ static int -insert_query(struct query_info* qinfo, struct compress_tree_node* tree, +insert_query(struct query_info* qinfo, struct compress_tree_node** tree, ldns_buffer* buffer, struct region* region) { if(ldns_buffer_remaining(buffer) < qinfo->qname_len+sizeof(uint16_t)*2) return RETVAL_TRUNC; /* buffer too small */ - if(!compress_tree_store(&tree, qinfo->qname, + if(!compress_tree_store(tree, qinfo->qname, dname_count_labels(qinfo->qname), ldns_buffer_position(buffer), region, NULL)) return RETVAL_OUTMEM; @@ -612,7 +612,7 @@ reply_info_encode(struct query_info* qinfo, struct reply_info* rep, /* insert query section */ if(rep->qdcount) { - if((r=insert_query(qinfo, tree, buffer, region)) != + if((r=insert_query(qinfo, &tree, buffer, region)) != RETVAL_OK) { if(r == RETVAL_TRUNC) { /* create truncated message */