From 8a731d62174effcc1af2b7355411f355b8f53f99 Mon Sep 17 00:00:00 2001 From: Marc Hoersken Date: Mon, 22 Dec 2014 17:03:42 +0100 Subject: [PATCH] examples on Windows: use native SOCKET-type instead of int And check return values accordingly. --- example/direct_tcpip.c | 28 +++++++++++++++++++++++++--- example/subsystem_netconf.c | 5 ++++- example/tcpip-forward.c | 17 ++++++++++++++++- 3 files changed, 45 insertions(+), 5 deletions(-) diff --git a/example/direct_tcpip.c b/example/direct_tcpip.c index 30e8911..49a3737 100644 --- a/example/direct_tcpip.c +++ b/example/direct_tcpip.c @@ -48,7 +48,7 @@ enum { int main(int argc, char *argv[]) { - int rc, sock = -1, listensock = -1, forwardsock = -1, i, auth = AUTH_NONE; + int rc, i, auth = AUTH_NONE; struct sockaddr_in sin; socklen_t sinlen; const char *fingerprint; @@ -64,6 +64,8 @@ int main(int argc, char *argv[]) #ifdef WIN32 char sockopt; + SOCKET sock = INVALID_SOCKET; + SOCKET listensock = INVALID_SOCKET, forwardsock = INVALID_SOCKET; WSADATA wsadata; int err; @@ -73,7 +75,8 @@ int main(int argc, char *argv[]) return 1; } #else - int sockopt; + int sockopt, sock = -1; + int listensock = -1, forwardsock = -1; #endif if (argc > 1) @@ -184,6 +187,18 @@ int main(int argc, char *argv[]) } listensock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); +#ifdef WIN32 + if (listensock == INVALID_SOCKET) { + fprintf(stderr, "failed to open listen socket!\n"); + return -1; + } +#else + if (listensock == -1) { + perror("socket"); + return -1; + } +#endif + sin.sin_family = AF_INET; sin.sin_port = htons(local_listenport); if (INADDR_NONE == (sin.sin_addr.s_addr = inet_addr(local_listenip))) { @@ -206,10 +221,17 @@ int main(int argc, char *argv[]) inet_ntoa(sin.sin_addr), ntohs(sin.sin_port)); forwardsock = accept(listensock, (struct sockaddr *)&sin, &sinlen); - if (-1 == forwardsock) { +#ifdef WIN32 + if (forwardsock == INVALID_SOCKET) { + fprintf(stderr, "failed to accept forward socket!\n"); + goto shutdown; + } +#else + if (forwardsock == -1) { perror("accept"); goto shutdown; } +#endif shost = inet_ntoa(sin.sin_addr); sport = ntohs(sin.sin_port); diff --git a/example/subsystem_netconf.c b/example/subsystem_netconf.c index d144d89..6a45e67 100644 --- a/example/subsystem_netconf.c +++ b/example/subsystem_netconf.c @@ -102,7 +102,7 @@ static int netconf_read_until(LIBSSH2_CHANNEL *channel, const char *endtag, int main(int argc, char *argv[]) { - int rc, sock = -1, i, auth = AUTH_NONE; + int rc, i, auth = AUTH_NONE; struct sockaddr_in sin; const char *fingerprint; char *userauthlist; @@ -112,6 +112,7 @@ int main(int argc, char *argv[]) ssize_t len; #ifdef WIN32 + SOCKET sock = INVALID_SOCKET; WSADATA wsadata; int err; @@ -120,6 +121,8 @@ int main(int argc, char *argv[]) fprintf(stderr, "WSAStartup failed with error: %d\n", err); return 1; } +#else + int sock = -1; #endif if (argc > 1) diff --git a/example/tcpip-forward.c b/example/tcpip-forward.c index ac504ce..4d20850 100644 --- a/example/tcpip-forward.c +++ b/example/tcpip-forward.c @@ -49,7 +49,7 @@ enum { int main(int argc, char *argv[]) { - int rc, sock = -1, forwardsock = -1, i, auth = AUTH_NONE; + int rc, i, auth = AUTH_NONE; struct sockaddr_in sin; socklen_t sinlen = sizeof(sin); const char *fingerprint; @@ -63,6 +63,7 @@ int main(int argc, char *argv[]) char buf[16384]; #ifdef WIN32 + SOCKET sock = INVALID_SOCKET, forwardsock = INVALID_SOCKET; WSADATA wsadata; int err; @@ -71,6 +72,8 @@ int main(int argc, char *argv[]) fprintf(stderr, "WSAStartup failed with error: %d\n", err); return 1; } +#else + int sock = -1, forwardsock = -1; #endif if (argc > 1) @@ -208,6 +211,18 @@ int main(int argc, char *argv[]) "Accepted remote connection. Connecting to local server %s:%d\n", local_destip, local_destport); forwardsock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); +#ifdef WIN32 + if (forwardsock == INVALID_SOCKET) { + fprintf(stderr, "failed to open forward socket!\n"); + goto shutdown; + } +#else + if (forwardsock == -1) { + perror("socket"); + goto shutdown; + } +#endif + sin.sin_family = AF_INET; sin.sin_port = htons(local_destport); if (INADDR_NONE == (sin.sin_addr.s_addr = inet_addr(local_destip))) {