void close_and_free_query(EV_P_ struct query_ctx *ctx) { if (ctx != NULL) { if (ctx->query != NULL) { resolv_cancel(ctx->query); ctx->query = NULL; } if (ctx->buf != NULL) { free(ctx->buf); } free(ctx); } }
static void close_and_free_server(EV_P_ struct server *server) { if (server != NULL) { if (server->query != NULL) { resolv_cancel(server->query); server->query = NULL; } ev_io_stop(EV_A_ & server->send_ctx->io); ev_io_stop(EV_A_ & server->recv_ctx->io); ev_timer_stop(EV_A_ & server->recv_ctx->watcher); close(server->fd); free_server(server); if (verbose) { server_conn--; LOGI("current server connection: %d", server_conn); } } }