From be795e1985002d94496b119a183cf136c1e9892a Mon Sep 17 00:00:00 2001 From: Max Lv Date: Wed, 27 Dec 2017 22:18:55 -0800 Subject: [PATCH] Refine query interface --- src/resolv.c | 4 +--- src/resolv.h | 6 +++--- src/server.c | 3 +-- src/udprelay.c | 11 +---------- src/udprelay.h | 1 - 5 files changed, 6 insertions(+), 19 deletions(-) diff --git a/src/resolv.c b/src/resolv.c index c06923ec..3c12c7f5 100644 --- a/src/resolv.c +++ b/src/resolv.c @@ -188,7 +188,7 @@ resolv_shutdown(struct ev_loop *loop) ares_library_cleanup(); } -struct resolv_query * +void resolv_start(const char *hostname, uint16_t port, void (*client_cb)(struct sockaddr *, void *), void (*free_cb)(void *), void *data) @@ -214,8 +214,6 @@ resolv_start(const char *hostname, uint16_t port, ares_gethostbyname(default_ctx.channel, hostname, AF_INET6, dns_query_v6_cb, query); reset_timer(); - - return query; } /* diff --git a/src/resolv.h b/src/resolv.h index 22f9e0f9..993692d4 100644 --- a/src/resolv.h +++ b/src/resolv.h @@ -36,9 +36,9 @@ struct resolv_query; int resolv_init(struct ev_loop *, char *, int); -struct resolv_query *resolv_start(const char *hostname, uint16_t port, - void (*client_cb)(struct sockaddr *, void *), - void (*free_cb)(void *), void *data); +void resolv_start(const char *hostname, uint16_t port, + void (*client_cb)(struct sockaddr *, void *), + void (*free_cb)(void *), void *data); void resolv_shutdown(struct ev_loop *); #endif diff --git a/src/server.c b/src/server.c index e585e821..b7d4824d 100644 --- a/src/server.c +++ b/src/server.c @@ -912,8 +912,7 @@ server_recv_cb(EV_P_ ev_io *w, int revents) snprintf(query->hostname, 256, "%s", host); server->stage = STAGE_RESOLVE; - struct resolv_query *q = resolv_start(host, port, - resolv_cb, resolv_free_cb, query); + resolv_start(host, port, resolv_cb, resolv_free_cb, query); } return; diff --git a/src/udprelay.c b/src/udprelay.c index 4ba5b9c8..805be332 100644 --- a/src/udprelay.c +++ b/src/udprelay.c @@ -1293,16 +1293,7 @@ server_recv_cb(EV_P_ ev_io *w, int revents) query_ctx->remote_ctx = remote_ctx; } - struct resolv_query *query = resolv_start(host, htons(atoi(port)), - resolv_cb, resolv_free_cb, query_ctx); - - if (query == NULL) { - ERROR("[udp] unable to create DNS query"); - close_and_free_query(EV_A_ query_ctx); - goto CLEAN_UP; - } - - query_ctx->query = query; + resolv_start(host, htons(atoi(port)), resolv_cb, resolv_free_cb, query_ctx); } #endif diff --git a/src/udprelay.h b/src/udprelay.h index 61137f9e..18421b9a 100644 --- a/src/udprelay.h +++ b/src/udprelay.h @@ -67,7 +67,6 @@ typedef struct server_ctx { #ifdef MODULE_REMOTE typedef struct query_ctx { - struct resolv_query *query; struct sockaddr_storage src_addr; buffer_t *buf; int addr_header_len;