chiark
/
gitweb
/
~mdw
/
secnet
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
resolver: Provide input name as argument to callback
[secnet]
/
resolver.c
diff --git
a/resolver.c
b/resolver.c
index 6088c562ed5c3d603756fb793f88fa46b8cc6466..2466245f12c43689a0ce8eeba3133939811f77e7 100644
(file)
--- a/
resolver.c
+++ b/
resolver.c
@@
-20,6
+20,7
@@
struct adns {
struct query {
void *cst;
struct query {
void *cst;
+ const char *name;
int port;
struct comm_if *comm;
resolve_answer_fn *answer;
int port;
struct comm_if *comm;
resolve_answer_fn *answer;
@@
-59,17
+60,17
@@
static bool_t resolve_request(void *sst, cstring_t name,
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;
- cb(cst,0,0,0,msg);
+ cb(cst,0,0,0,
name,
msg);
} else {
} else {
- cb(cst,&ca,1,1,0);
+ cb(cst,&ca,1,1,
name,
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,&ca,1,1,0);
+ cb(cst,&ca,1,1,
name,
0);
else
else
- cb(cst,0,0,0,"invalid IP address");
+ cb(cst,0,0,0,
name,
"invalid IP address");
#endif
return True;
}
#endif
return True;
}
@@
-78,6
+79,7
@@
static bool_t resolve_request(void *sst, cstring_t name,
q->cst=cst;
q->comm=comm;
q->port=port;
q->cst=cst;
q->comm=comm;
q->port=port;
+ q->name=name;
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);
@@
-116,7
+118,7
@@
static void resolver_afterpoll(void *sst, struct pollfd *fds, int nfds)
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,0,adns_strerror(ans->status));
+ q->answer(q->cst,NULL,0,0,
q->name,
adns_strerror(ans->status));
free(q);
free(ans);
} else {
free(q);
free(ans);
} else {
@@
-148,7
+150,7
@@
static void resolver_afterpoll(void *sst, struct pollfd *fds, int nfds)
memcpy(&ca->ia,&ra->addr,ra->len);
wslot++;
}
memcpy(&ca->ia,&ra->addr,ra->len);
wslot++;
}
- q->answer(q->cst,ca_buf,wslot,total,0);
+ q->answer(q->cst,ca_buf,wslot,total,
q->name,
0);
free(q);
free(ans);
}
free(q);
free(ans);
}