Esempio n. 1
0
File: tester.c Progetto: drb/firedns
void do_firedns_getmx(firedns_state* state, char * string) {
	int fd;
	fd_set s;
	int n;
	struct timeval tv;
	char *m;

	fprintf(stderr,"taking firedns_getmx(%s): ",string);
	fd = firedns_getmx(state, string);
	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);
}
Esempio n. 2
0
static inline char *firedns_resolvemx_i(const char *const name, 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_getmx(name);
		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;
}
Esempio n. 3
0
char *firedns_resolvemx(firedns_state* self, const char* name) {
	int fd;
	int t,i;
	char * restrict ret;
	fd_set s;
	struct timeval tv;
	for (t = 0; t < FIREDNS_TRIES; t++) {
		fd = firedns_getmx(self, name);
		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 = firedns_getresult(self, fd);
		if (ret != NULL || i != 0) {
			return ret;
		}
	}
	return NULL;
}