void do_firedns_getname6(firedns_state *state, char * string) { int fd; fd_set s; int n; struct timeval tv; char *m; struct in6_addr *addr6; struct in6_addr buf6; fprintf(stderr,"taking firedns_getname6(%s): ",string); addr6 = firedns_aton6(string, &buf6); if (addr6 == NULL) { fprintf(stderr,"(null)\n"); return; } fd = firedns_getname6(state, addr6); fprintf(stderr,"%d\n",fd); if (fd == -1) return; tv.tv_sec = 5; tv.tv_usec = 0; FD_ZERO(&s); FD_SET(fd,&s); n = select(fd + 1,&s,NULL,NULL,&tv); (void) n; m = firedns_getresult(state, fd); fprintf(stderr,"getting result: %s\n",m); }
static inline char *firedns_resolvename6_i(const struct in6_addr *const ip, char *(*result)(int)) { int fd; int t,i; char *ret; fd_set s; struct timeval tv; for (t = 0; t < FIREDNS_TRIES; t++) { fd = firedns_getname6(ip); if (fd == -1) return NULL; tv.tv_sec = 5; tv.tv_usec = 0; FD_ZERO(&s); FD_SET(fd,&s); i = select(fd + 1,&s,NULL,NULL,&tv); ret = result(fd); if (ret != NULL || i != 0) return ret; } return NULL; }