Пример #1
0
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);
}
Пример #2
0
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;
}