summaryrefslogtreecommitdiffstats
path: root/libvncclient/sockets.c
diff options
context:
space:
mode:
Diffstat (limited to 'libvncclient/sockets.c')
-rw-r--r--libvncclient/sockets.c25
1 files changed, 17 insertions, 8 deletions
diff --git a/libvncclient/sockets.c b/libvncclient/sockets.c
index 135861e..bdfd811 100644
--- a/libvncclient/sockets.c
+++ b/libvncclient/sockets.c
@@ -250,13 +250,7 @@ WriteToRFBServer(rfbClient* client, char *buf, int n)
* ConnectToTcpAddr connects to the given TCP port.
*/
-int
-ConnectClientToTcpAddr(unsigned int host, int port)
-{
- int sock;
- struct sockaddr_in addr;
- int one = 1;
-
+static int initSockets() {
#ifdef WIN32
WSADATA trash;
static rfbBool WSAinitted=FALSE;
@@ -269,6 +263,18 @@ ConnectClientToTcpAddr(unsigned int host, int port)
}
}
#endif
+ return 1;
+}
+
+int
+ConnectClientToTcpAddr(unsigned int host, int port)
+{
+ int sock;
+ struct sockaddr_in addr;
+ int one = 1;
+
+ if (!initSockets())
+ return -1;
addr.sin_family = AF_INET;
addr.sin_port = htons(port);
@@ -464,7 +470,7 @@ StringToIPAddr(const char *str, unsigned int *addr)
struct hostent *hp;
if (strcmp(str,"") == 0) {
- *addr = 0; /* local */
+ *addr = htonl(INADDR_LOOPBACK); /* local */
return TRUE;
}
@@ -473,6 +479,9 @@ StringToIPAddr(const char *str, unsigned int *addr)
if (*addr != -1)
return TRUE;
+ if (!initSockets())
+ return -1;
+
hp = gethostbyname(str);
if (hp) {