From 8ad8d7eb41d25ca44ff85c5eb3ec0ae1f29992e7 Mon Sep 17 00:00:00 2001 From: Leonid Evdokimov Date: Sat, 27 Nov 2010 23:20:46 +0200 Subject: [PATCH] More source code cleanup. --- redsocks.c | 12 ++---------- utils.c | 17 +++++++++++++++++ utils.h | 2 ++ 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/redsocks.c b/redsocks.c index 0969094..19b73c6 100644 --- a/redsocks.c +++ b/redsocks.c @@ -477,21 +477,13 @@ void redsocks_write_helper( static void redsocks_relay_connected(struct bufferevent *buffev, void *_arg) { redsocks_client *client = _arg; - int pseudo_errno; assert(buffev == client->relay); redsocks_touch_client(client); - pseudo_errno = redsocks_socket_geterrno(client, buffev); - if (pseudo_errno == -1) { - redsocks_log_errno(client, LOG_NOTICE, "redsocks_socket_geterrno"); - goto fail; - } - - if (pseudo_errno) { - errno = pseudo_errno; - redsocks_log_errno(client, LOG_NOTICE, "connect"); + if (!red_is_socket_connected_ok(buffev)) { + redsocks_log_errno(client, LOG_NOTICE, "red_is_socket_connected_ok"); goto fail; } diff --git a/utils.c b/utils.c index 39df3a8..fef54d7 100644 --- a/utils.c +++ b/utils.c @@ -103,4 +103,21 @@ int fcntl_nonblock(int fd) return 0; } +int red_is_socket_connected_ok(struct bufferevent *buffev) +{ + int pseudo_errno = red_socket_geterrno(buffev); + + if (pseudo_errno == -1) { + return 0; + } + else if (pseudo_errno) { + errno = pseudo_errno; + log_errno(LOG_NOTICE, "connect"); + return 0; + } + else { + return 1; + } +} + /* vim:set tabstop=4 softtabstop=4 shiftwidth=4: */ diff --git a/utils.h b/utils.h index 057d6c0..d7ae73b 100644 --- a/utils.h +++ b/utils.h @@ -26,6 +26,8 @@ time_t redsocks_time(time_t *t); struct bufferevent* red_connect_relay(struct sockaddr_in *addr, evbuffercb writecb, everrorcb errorcb, void *cbarg); int red_socket_geterrno(struct bufferevent *buffev); +int red_is_socket_connected_ok(struct bufferevent *buffev); + int fcntl_nonblock(int fd); /* vim:set tabstop=4 softtabstop=4 shiftwidth=4: */