Fix hostname resolution problems under Windows

On Windows, the WSA system needs to be initialized to be able to look up
host names.

This patch also changes *addr = 0 to use the constant INADDR_LOOPBACK
instead, which seems to be required on Windows.
pull/1/head
Alexander Dorokhine 15 years ago committed by Johannes Schindelin
parent 35c42cf3a6
commit b02849ab80

@ -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) {

Loading…
Cancel
Save