From c09b38eba2f7fa167c1bb49760d9b921adf6047c Mon Sep 17 00:00:00 2001 From: Max Lv Date: Sat, 19 Apr 2014 20:50:08 +0800 Subject: [PATCH] fix the segfault --- src/server.c | 5 +---- src/server.h | 4 ++-- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/server.c b/src/server.c index 2c14277b..6d09d554 100644 --- a/src/server.c +++ b/src/server.c @@ -357,7 +357,6 @@ static void server_recv_cb (EV_P_ ev_io *w, int revents) server->query = query; ev_io_stop(EV_A_ &server_recv_ctx->io); - ev_timer_start(EV_A_ &server->send_ctx->watcher); return; } @@ -468,8 +467,7 @@ static void server_resolve_cb(EV_P_ ev_io *w, int revents) } asyncns_query_t *query = asyncns_getnext(asyncns); - struct server_ctx *server_ctx = (struct server_ctx *) asyncns_getuserdata(asyncns, query); - struct server *server = server_ctx->server; + struct server *server= (struct server*) asyncns_getuserdata(asyncns, query); if (!asyncns_isdone(asyncns, query)) { @@ -860,7 +858,6 @@ void close_and_free_server(EV_P_ struct server *server) } ev_io_stop(EV_A_ &server->send_ctx->io); ev_io_stop(EV_A_ &server->recv_ctx->io); - ev_timer_stop(EV_A_ &server->send_ctx->watcher); ev_timer_stop(EV_A_ &server->recv_ctx->watcher); close(server->fd); free_server(server); diff --git a/src/server.h b/src/server.h index 9bc219d4..6e2a52d8 100644 --- a/src/server.h +++ b/src/server.h @@ -32,17 +32,17 @@ struct server_ctx struct server { int fd; + int stage; int buf_len; int buf_idx; char *buf; // server send from, remote recv into - char stage; + asyncns_query_t *query; struct enc_ctx *e_ctx; struct enc_ctx *d_ctx; struct server_ctx *recv_ctx; struct server_ctx *send_ctx; struct listen_ctx *listen_ctx; struct remote *remote; - asyncns_query_t *query; }; struct remote_ctx