fix issues

This commit is contained in:
Max Lv
2013-04-02 16:33:50 +08:00
parent e33a82ff74
commit 5df9644823
6 changed files with 45 additions and 27 deletions
+12 -12
View File
@@ -69,7 +69,7 @@ int create_and_bind(const char *host, const char *port) {
int opt = 1;
int err = setsockopt(listen_sock, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));
if (err) {
perror("setsocket");
ERROR("setsocket");
}
s = bind(listen_sock, rp->ai_addr, rp->ai_addrlen);
@@ -77,7 +77,7 @@ int create_and_bind(const char *host, const char *port) {
/* We managed to bind successfully! */
break;
} else {
perror("bind");
ERROR("bind");
}
close(listen_sock);
@@ -102,14 +102,14 @@ struct remote *connect_to_remote(char *remote_host, char *remote_port, int timeo
int err = getaddrinfo(remote_host, remote_port, &hints, &res);
if (err) {
perror("getaddrinfo");
ERROR("getaddrinfo");
return NULL;
}
// initilize remote socks
sockfd = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
if (sockfd < 0) {
perror("socket");
ERROR("socket");
close(sockfd);
freeaddrinfo(res);
return NULL;
@@ -153,7 +153,7 @@ static void server_recv_cb (EV_P_ ev_io *w, int revents) {
// continue to wait for recv
return;
} else {
perror("server recv");
ERROR("server recv");
close_and_free_remote(EV_A_ remote);
close_and_free_server(EV_A_ server);
return;
@@ -172,7 +172,7 @@ static void server_recv_cb (EV_P_ ev_io *w, int revents) {
ev_io_stop(EV_A_ &server_recv_ctx->io);
ev_io_start(EV_A_ &remote->send_ctx->io);
} else {
perror("server_recv_send");
ERROR("server_recv_send");
close_and_free_remote(EV_A_ remote);
close_and_free_server(EV_A_ server);
}
@@ -303,7 +303,7 @@ static void server_send_cb (EV_P_ ev_io *w, int revents) {
server->buf_len, 0);
if (s < 0) {
if (errno != EAGAIN && errno != EWOULDBLOCK) {
perror("server_send_send");
ERROR("server_send_send");
close_and_free_remote(EV_A_ remote);
close_and_free_server(EV_A_ server);
}
@@ -378,7 +378,7 @@ static void remote_recv_cb (EV_P_ ev_io *w, int revents) {
// continue to wait for recv
return;
} else {
perror("remote recv");
ERROR("remote recv");
close_and_free_remote(EV_A_ remote);
close_and_free_server(EV_A_ server);
return;
@@ -395,7 +395,7 @@ static void remote_recv_cb (EV_P_ ev_io *w, int revents) {
ev_io_stop(EV_A_ &remote_recv_ctx->io);
ev_io_start(EV_A_ &server->send_ctx->io);
} else {
perror("remote_recv_send");
ERROR("remote_recv_send");
close_and_free_remote(EV_A_ remote);
close_and_free_server(EV_A_ server);
}
@@ -448,7 +448,7 @@ static void remote_send_cb (EV_P_ ev_io *w, int revents) {
}
} else {
perror("getpeername");
ERROR("getpeername");
// not connected
close_and_free_remote(EV_A_ remote);
close_and_free_server(EV_A_ server);
@@ -467,7 +467,7 @@ static void remote_send_cb (EV_P_ ev_io *w, int revents) {
remote->buf_len, 0);
if (s < 0) {
if (errno != EAGAIN && errno != EWOULDBLOCK) {
perror("remote_send_send");
ERROR("remote_send_send");
// close and free
close_and_free_remote(EV_A_ remote);
close_and_free_server(EV_A_ server);
@@ -604,7 +604,7 @@ static void accept_cb (EV_P_ ev_io *w, int revents) {
struct listen_ctx *listener = (struct listen_ctx *)w;
int serverfd = accept(listener->fd, NULL, NULL);
if (serverfd == -1) {
perror("accept");
ERROR("accept");
return;
}
setnonblocking(serverfd);