-static bool
-register_callback( RES_STAT *s, void (*cbfunc)(int, short))
-{
- assert(cbfunc != NULL);
- assert(s != NULL);
- assert(s->resolver_fd >= 0);
-
- if (io_setnonblock(s->resolver_fd) &&
- io_event_create(s->resolver_fd, IO_WANTREAD, cbfunc))
- return true;
-
- Log( LOG_CRIT, "Resolver: Could not register callback function: %s!", strerror(errno));
- close(s->resolver_fd);
- Resolve_Init(s);
- return false;
-}
-
-
-GLOBAL bool
-Resolve_Shutdown( RES_STAT *s)
-{
- bool ret = false;
-
- assert(s != NULL);
- assert(s->resolver_fd >= 0);
-
- if (s->resolver_fd >= 0)
- ret = io_close(s->resolver_fd);
-
- Resolve_Init(s);
- return ret;
-}
-
-
-/**
- * Read result of resolver sub-process from pipe
- */
-GLOBAL size_t
-Resolve_Read( RES_STAT *s, void* readbuf, size_t buflen)
-{
- ssize_t bytes_read;
-
- assert(buflen > 0);
-
- /* Read result from pipe */
- bytes_read = read(s->resolver_fd, readbuf, buflen);
- if (bytes_read < 0) {
- if (errno == EAGAIN)
- return 0;
-
- Log( LOG_CRIT, "Resolver: Can't read result: %s!", strerror(errno));
- bytes_read = 0;
- }
-#ifdef DEBUG
- else if (bytes_read == 0)
- Log( LOG_DEBUG, "Resolver: Can't read result: EOF");
-#endif
- Resolve_Shutdown(s);
- return (size_t)bytes_read;
-}