ca.ia.sin.sin_family=AF_INET;
ca.ia.sin.sin_port=htons(port);
if (inet_aton(trimmed,&ca.ia.sin.sin_addr))
- cb(cst,&ca,1,1);
+ cb(cst,&ca,1,1,0);
else
- cb(cst,0,0,0);
+ cb(cst,0,0,0,"invalid IP address");
return True;
}
if (rv==0) {
q=qp;
if (ans->status!=adns_s_ok) {
- q->answer(q->cst,NULL,0,0); /* Failure */
+ q->answer(q->cst,NULL,0,0,adns_strerror(ans->status));
free(q);
free(ans);
} else {
memcpy(&ca->ia,&ra->addr,ra->len);
wslot++;
}
- q->answer(q->cst,ca_buf,wslot,total);
+ q->answer(q->cst,ca_buf,wslot,total,0);
free(q);
free(ans);
}
actually found in the DNS, which may be bigger if addrs is equal
to MAX_PEER_ADDRS (ie there were too many). */
typedef void resolve_answer_fn(void *st, const struct comm_addr *addrs,
- int naddrs, int was_naddrs);
+ int naddrs, int was_naddrs,
+ const char *failwhy);
typedef bool_t resolve_request_fn(void *st, cstring_t name,
int remoteport, struct comm_if *comm,
resolve_answer_fn *cb, void *cst);
}
static void site_resolve_callback(void *sst, const struct comm_addr *addrs,
- int naddrs, int was_naddrs)
+ int naddrs, int was_naddrs,
+ const char *failwhy)
{
struct site *st=sst;
was_naddrs, naddrs);
}
} else {
- slog(st,LOG_ERROR,"resolution of %s failed",st->address);
+ slog(st,LOG_ERROR,"resolution of %s failed: %s",st->address,failwhy);
}
switch (st->state) {