diff options
author | Matt Johnston <matt@ucc.asn.au> | 2015-02-14 09:56:11 +0800 |
---|---|---|
committer | Matt Johnston <matt@ucc.asn.au> | 2015-02-14 09:56:11 +0800 |
commit | 9abcc7b909b6ff0f173405e73dc7c0c3d093e44a (patch) | |
tree | a6b29309918fa59d93491dc0fa7c396e12e65c1d | |
parent | 2c35f1c8fd7ded63a1e0a14fce01032697dac352 (diff) |
connect_remote() is now always non-blocking
-rw-r--r-- | cli-main.c | 3 | ||||
-rw-r--r-- | cli-tcpfwd.c | 2 | ||||
-rw-r--r-- | dbutil.c | 13 | ||||
-rw-r--r-- | dbutil.h | 3 | ||||
-rw-r--r-- | svr-tcpfwd.c | 2 |
5 files changed, 9 insertions, 14 deletions
@@ -72,8 +72,7 @@ int main(int argc, char ** argv) { } else #endif { - int sock = connect_remote(cli_opts.remotehost, cli_opts.remoteport, - 1, &error); + int sock = connect_remote(cli_opts.remotehost, cli_opts.remoteport, &error); sock_in = sock_out = sock; } diff --git a/cli-tcpfwd.c b/cli-tcpfwd.c index fa61d13..3894044 100644 --- a/cli-tcpfwd.c +++ b/cli-tcpfwd.c @@ -254,7 +254,7 @@ static int newtcpforwarded(struct Channel * channel) { } snprintf(portstring, sizeof(portstring), "%d", fwd->connectport); - sock = connect_remote(fwd->connectaddr, portstring, 1, NULL); + sock = connect_remote(fwd->connectaddr, portstring, NULL); if (sock < 0) { TRACE(("leave newtcpdirect: sock failed")) err = SSH_OPEN_CONNECT_FAILED; @@ -435,8 +435,7 @@ static void set_piggyback_ack(int sock) { * wasn't null, it will be a newly malloced error message */ /* TODO: maxfd */ -int connect_remote(const char* remotehost, const char* remoteport, - int nonblocking, char ** errstring) { +int connect_remote(const char* remotehost, const char* remoteport, char ** errstring) { struct addrinfo *res0 = NULL, *res = NULL, hints; int sock; @@ -475,16 +474,14 @@ int connect_remote(const char* remotehost, const char* remoteport, continue; } - if (nonblocking) { - setnonblocking(sock); + setnonblocking(sock); #if defined(__linux__) && defined(TCP_DEFER_ACCEPT) - set_piggyback_ack(sock); + set_piggyback_ack(sock); #endif - } if (connect(sock, res->ai_addr, res->ai_addrlen) < 0) { - if (errno == EINPROGRESS && nonblocking) { + if (errno == EINPROGRESS) { TRACE(("Connect in progress")) break; } else { @@ -498,7 +495,7 @@ int connect_remote(const char* remotehost, const char* remoteport, break; /* Success */ } - if (sock < 0 && !(errno == EINPROGRESS && nonblocking)) { + if (sock < 0 && !(errno == EINPROGRESS)) { /* Failed */ if (errstring != NULL && *errstring == NULL) { int len; @@ -83,8 +83,7 @@ void run_shell_command(const char* cmd, unsigned int maxfd, char* usershell); #ifdef ENABLE_CONNECT_UNIX int connect_unix(const char* addr); #endif -int connect_remote(const char* remotehost, const char* remoteport, - int nonblocking, char ** errstring); +int connect_remote(const char* remotehost, const char* remoteport, char ** errstring); int buf_readfile(buffer* buf, const char* filename); int buf_getline(buffer * line, FILE * authfile); diff --git a/svr-tcpfwd.c b/svr-tcpfwd.c index e5f219e..f2c4b93 100644 --- a/svr-tcpfwd.c +++ b/svr-tcpfwd.c @@ -270,7 +270,7 @@ static int newtcpdirect(struct Channel * channel) { } snprintf(portstring, sizeof(portstring), "%d", destport); - sock = connect_remote(desthost, portstring, 1, NULL); + sock = connect_remote(desthost, portstring, NULL); if (sock < 0) { err = SSH_OPEN_CONNECT_FAILED; TRACE(("leave newtcpdirect: sock failed")) |