From: Wouter Wijngaards Date: Thu, 18 Oct 2007 09:04:55 +0000 (+0000) Subject: errors have addresses with them. X-Git-Tag: release-0.6~52 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=268ada0d33392c8d6539c2e8871a6aaefe5669f3;p=thirdparty%2Funbound.git errors have addresses with them. git-svn-id: file:///svn/unbound/trunk@692 be551aaa-1e26-0410-a405-d3ace91eadb9 --- diff --git a/doc/Changelog b/doc/Changelog index 2114bc3be..1ce00179a 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +18 October 2007: Wouter + - addresses are logged with errors. + 17 October 2007: Wouter - fixup another cycle detect and ns-addr timeout resolution bug. This time by refusing delegations from the cache without addresses diff --git a/iterator/iter_delegpt.c b/iterator/iter_delegpt.c index 4a8870250..8272f4dce 100644 --- a/iterator/iter_delegpt.c +++ b/iterator/iter_delegpt.c @@ -215,7 +215,7 @@ void delegpt_log(enum verbosity_value v, struct delegpt* dp) log_info(" %s%s", buf, (ns->resolved?"*":"")); } for(a = dp->target_list; a; a = a->next_target) { - log_addr(" ", &a->addr, a->addrlen); + log_addr(VERB_ALGO, " ", &a->addr, a->addrlen); } } } diff --git a/iterator/iterator.c b/iterator/iterator.c index 5feb63fb9..3890a67e8 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -1145,7 +1145,8 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, &target->addr, target->addrlen, qstate); if(!outq) { log_err("error sending query to auth server; skip this address"); - log_addr("error for address:", &target->addr, target->addrlen); + log_addr(0, "error for address:", + &target->addr, target->addrlen); return next_state(iq, QUERYTARGETS_STATE); } outbound_list_insert(&iq->outlist, outq); diff --git a/services/outside_network.c b/services/outside_network.c index 457e20f8e..73e45271e 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -132,14 +132,14 @@ outnet_tcp_take_into_use(struct waiting_tcp* w, uint8_t* pkt, size_t pkt_len) s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); if(s == -1) { log_err("outgoing tcp: socket: %s", strerror(errno)); - log_addr("failed address", &w->addr, w->addrlen); + log_addr(0, "failed address", &w->addr, w->addrlen); return 0; } fd_set_nonblock(s); if(connect(s, (struct sockaddr*)&w->addr, w->addrlen) == -1) { if(errno != EINPROGRESS) { log_err("outgoing tcp: connect: %s", strerror(errno)); - log_addr("failed address", &w->addr, w->addrlen); + log_addr(0, "failed address", &w->addr, w->addrlen); close(s); return 0; } @@ -206,7 +206,8 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, /* check ID */ if(ldns_buffer_limit(c->buffer) < sizeof(uint16_t) || LDNS_ID_WIRE(ldns_buffer_begin(c->buffer))!=pend->id) { - log_addr("outnettcp: bad ID in reply, from:", + log_addr(VERB_DETAIL, + "outnettcp: bad ID in reply, from:", &pend->query->addr, pend->query->addrlen); error = NETEVENT_CLOSED; } @@ -241,9 +242,8 @@ outnet_udp_cb(struct comm_point* c, void* arg, int error, memcpy(&key.addr, &reply_info->addr, reply_info->addrlen); key.addrlen = reply_info->addrlen; verbose(VERB_ALGO, "Incoming reply id = %4.4x", key.id); - if(verbosity >= VERB_ALGO) { - log_addr("Incoming reply addr =", &reply_info->addr, reply_info->addrlen); - } + log_addr(VERB_ALGO, "Incoming reply addr =", + &reply_info->addr, reply_info->addrlen); /* find it, see if this thing is a valid query response */ verbose(VERB_ALGO, "lookup size is %d entries", (int)outnet->pending->count); @@ -1019,8 +1019,9 @@ serviced_tcp_callback(struct comm_point* c, void* arg, int error, struct serviced_query* sq = (struct serviced_query*)arg; struct comm_reply r2; sq->pending = NULL; /* removed after this callback */ - if(error != NETEVENT_NOERROR && verbosity >= VERB_DETAIL) - log_addr("tcp error for address", &sq->addr, sq->addrlen); + if(error != NETEVENT_NOERROR) + log_addr(VERB_DETAIL, "tcp error for address", + &sq->addr, sq->addrlen); if(error==NETEVENT_NOERROR) infra_update_tcp_works(sq->outnet->infra, &sq->addr, sq->addrlen); diff --git a/testcode/fake_event.c b/testcode/fake_event.c index ba53bc74d..261b012fb 100644 --- a/testcode/fake_event.c +++ b/testcode/fake_event.c @@ -178,7 +178,7 @@ pending_find_match(struct replay_runtime* runtime, struct entry** entry, "with entry line %d", timenow, p->start_step, p->end_step, (*entry)->lineno); if(p->addrlen != 0) - log_addr("matched ip", &p->addr, p->addrlen); + log_addr(0, "matched ip", &p->addr, p->addrlen); log_pkt("matched pkt: ", (*entry)->reply_list->reply); return 1; } diff --git a/util/net_help.c b/util/net_help.c index 0fa6a44c1..9a1ea6948 100644 --- a/util/net_help.c +++ b/util/net_help.c @@ -146,13 +146,16 @@ memdup(void* data, size_t len) } void -log_addr(const char* str, struct sockaddr_storage* addr, socklen_t addrlen) +log_addr(enum verbosity_value v, const char* str, + struct sockaddr_storage* addr, socklen_t addrlen) { uint16_t port; const char* family = "unknown"; char dest[100]; int af = (int)((struct sockaddr_in*)addr)->sin_family; void* sinaddr = &((struct sockaddr_in*)addr)->sin_addr; + if(verbosity < v) + return; switch(af) { case AF_INET: family="ip4"; break; case AF_INET6: family="ip6"; @@ -166,8 +169,8 @@ log_addr(const char* str, struct sockaddr_storage* addr, socklen_t addrlen) } dest[sizeof(dest)-1] = 0; port = ntohs(((struct sockaddr_in*)addr)->sin_port); - verbose(VERB_DETAIL, "%s %s %s %d (len %d)", - str, family, dest, (int)port, (int)addrlen); + log_info("%s %s %s %d (len %d)", str, family, dest, (int)port, + (int)addrlen); } int diff --git a/util/net_help.h b/util/net_help.h index aeb3802bc..c5b574e88 100644 --- a/util/net_help.h +++ b/util/net_help.h @@ -145,12 +145,13 @@ void* memdup(void* data, size_t len); /** * Prints the sockaddr in readable format with log_info. Debug helper. + * @param v: at what verbosity level to print this. * @param str: descriptive string printed with it. * @param addr: the sockaddr to print. Can be ip4 or ip6. * @param addrlen: length of addr. */ -void log_addr(const char* str, struct sockaddr_storage* addr, - socklen_t addrlen); +void log_addr(enum verbosity_value v, const char* str, + struct sockaddr_storage* addr, socklen_t addrlen); /** * Prints zone name and sockaddr in readable format with log_info. Debug.