This is going to be convenient for our one call site.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
struct query {
void *cst;
struct query {
void *cst;
int port;
struct comm_if *comm;
resolve_answer_fn *answer;
int port;
struct comm_if *comm;
resolve_answer_fn *answer;
snprintf(msg,sizeof(msg),"invalid address literal: %s",
strerror(rv));
msg[sizeof(msg)-1]=0;
snprintf(msg,sizeof(msg),"invalid address literal: %s",
strerror(rv));
msg[sizeof(msg)-1]=0;
}
#else
ca.ia.sin.sin_family=AF_INET;
ca.ia.sin.sin_port=htons(port);
if (inet_aton(trimmed,&ca.ia.sin.sin_addr))
}
#else
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,0,0,"invalid IP address");
+ cb(cst,0,0,name,"invalid IP address");
q->cst=cst;
q->comm=comm;
q->port=port;
q->cst=cst;
q->comm=comm;
q->port=port;
q->answer=cb;
rv=adns_submit(st->ast, name, adns_r_addr, 0, q, &q->query);
q->answer=cb;
rv=adns_submit(st->ast, name, adns_r_addr, 0, q, &q->query);
if (rv==0) {
q=qp;
if (ans->status!=adns_s_ok) {
if (rv==0) {
q=qp;
if (ans->status!=adns_s_ok) {
- q->answer(q->cst,NULL,0,adns_strerror(ans->status));
+ q->answer(q->cst,NULL,0,q->name,adns_strerror(ans->status));
free(q);
free(ans);
} else {
free(q);
free(ans);
} else {
- q->answer(q->cst,ca_buf,wslot,0);
+ q->answer(q->cst,ca_buf,wslot,q->name,0);
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,
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, const char *failwhy);
+ int naddrs, const char *name,
+ const char *failwhy);
+ /* name is the same ptr as passed to request, so its lifetime must
+ * be suitable*/
typedef bool_t resolve_request_fn(void *st, cstring_t name,
int remoteport, struct comm_if *comm,
resolve_answer_fn *cb, void *cst);
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,
}
static void site_resolve_callback(void *sst, const struct comm_addr *addrs,
- int naddrs, const char *failwhy)
+ int naddrs, const char *address,
+ const char *failwhy)