/* * DNS UDP socket activity callback */ static void resolv_sock_cb(struct ev_loop *loop, struct ev_io *w, int revents) { struct dns_ctx *ctx = (struct dns_ctx *)w->data; if (revents & EV_READ) dns_ioevent(ctx, ev_now(loop)); }
static int dns_module_eventer_callback(eventer_t e, int mask, void *closure, struct timeval *now) { dns_ctx_handle_t *h = closure; dns_module_dns_ctx_acquire(h); dns_ioevent(h->ctx, now->tv_sec); if(dns_module_dns_ctx_release(h)) { /* We've been closed */ return 0; } return EVENTER_READ | EVENTER_EXCEPTION; }
/*@null@*/ static PyObject* Resolver_ioevent (Resolver *self, PyObject *args) { time_t now = 0; if (!PyArg_ParseTuple(args, "|l", &now)) { PyErr_SetString(PyExc_TypeError, "Resolver.ioevent(now=0) wrong arguments."); return NULL; } dns_ioevent(self->ctx, now); Py_RETURN_NONE; }
/** responses from the resolver */ static int _mio_resolver_callback(mio_t m, mio_action_t a, mio_fd_t fd, void *data, void *arg) { switch(a) { case action_READ: log_debug(ZONE, "read action on fd %d", fd->fd); dns_ioevent(0, time(NULL)); default: break; } return 0; }
static void waitdns(struct ipcheck *ipc) { struct timeval tv; fd_set fds; int c; int fd = dns_sock(NULL); time_t now = 0; FD_ZERO(&fds); while((c = dns_timeouts(NULL, -1, now)) > 0) { FD_SET(fd, &fds); tv.tv_sec = c; tv.tv_usec = 0; c = select(fd+1, &fds, NULL, NULL, &tv); now = time(NULL); if (c > 0) dns_ioevent(NULL, now); if (stopfirst && ipc->listed) break; } }
static int dns_cache_callback(eventer_t e, int mask, void *closure, struct timeval *now) { struct dns_ctx *ctx = closure; dns_ioevent(ctx, now->tv_sec); return EVENTER_READ | EVENTER_EXCEPTION; }
static int dns_eventer_callback(eventer_t e, int mask, void *closure, struct timeval *now) { dns_ctx_handle_t *h = closure; dns_ioevent(h->ctx, now->tv_sec); return EVENTER_READ | EVENTER_EXCEPTION; }
static void dns_io_cb (EV_P_ ev_io *w, int revents) { ev_tstamp now = ev_now(EV_A ); dns_ioevent(NULL, now); }
static void ape_dns_io() { dns_ioevent(NULL, 0); }