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);
+ cb(cst,&ca,1,0);
else
- cb(cst,0,0);
+ cb(cst,0,0,"invalid IP address");
return True;
}
if (rv==0) {
q=qp;
if (ans->status!=adns_s_ok) {
- q->answer(q->cst,NULL,0); /* Failure */
+ q->answer(q->cst,NULL,0,adns_strerror(ans->status));
free(q);
free(ans);
} else {
break;
}
}
- q->answer(q->cst,ca_buf,wslot);
+ q->answer(q->cst,ca_buf,wslot,0);
free(q);
free(ans);
}
will be freed once resolve_answer_fn returns. It is in network byte
order. */
typedef void resolve_answer_fn(void *st, const struct comm_addr *addrs,
- int naddrs);
+ int 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 naddrs, const char *failwhy)
{
struct site *st=sst;
slog(st,LOG_STATE,"resolution of %s completed, %d addrs, eg: %s",
st->address, naddrs, comm_addr_to_string(&addrs[0]));;
} 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) {