0
0
mirror of https://github.com/darkk/redsocks.git synced 2025-08-25 19:25:30 +00:00

More source code cleanup.

This commit is contained in:
Leonid Evdokimov 2010-11-27 23:20:46 +02:00
parent c50dd8b2b4
commit 8ad8d7eb41
3 changed files with 21 additions and 10 deletions

View File

@ -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;
}

17
utils.c
View File

@ -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: */

View File

@ -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: */