errors have addresses with them.

git-svn-id: file:///svn/unbound/trunk@692 be551aaa-1e26-0410-a405-d3ace91eadb9
This commit is contained in:
Wouter Wijngaards 2007-10-18 09:04:55 +00:00
parent 907ab3d99a
commit 268ada0d33
7 changed files with 25 additions and 16 deletions

View file

@ -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

View file

@ -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);
}
}
}

View file

@ -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);

View file

@ -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);

View file

@ -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;
}

View file

@ -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

View file

@ -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.