+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
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);
}
}
}
&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);
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;
}
/* 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;
}
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);
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);
"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;
}
}
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";
}
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
/**
* 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.