summaryrefslogtreecommitdiffstats
path: root/libvncclient/rfbproto.c
diff options
context:
space:
mode:
Diffstat (limited to 'libvncclient/rfbproto.c')
-rw-r--r--libvncclient/rfbproto.c38
1 files changed, 25 insertions, 13 deletions
diff --git a/libvncclient/rfbproto.c b/libvncclient/rfbproto.c
index 33307d2..83ba3a5 100644
--- a/libvncclient/rfbproto.c
+++ b/libvncclient/rfbproto.c
@@ -363,8 +363,6 @@ IsUnixSocket(const char *name)
rfbBool
ConnectToRFBServer(rfbClient* client,const char *hostname, int port)
{
- unsigned int host;
-
if (client->serverPort==-1) {
/* serverHost is a file recorded by vncrec. */
const char* magic="vncLog0.0";
@@ -399,12 +397,20 @@ ConnectToRFBServer(rfbClient* client,const char *hostname, int port)
else
#endif
{
- /* serverHost is a hostname */
- if (!StringToIPAddr(hostname, &host)) {
- rfbClientLog("Couldn't convert '%s' to host address\n", hostname);
- return FALSE;
+#ifdef LIBVNCSERVER_IPv6
+ client->sock = ConnectClientToTcpAddr6(hostname, port);
+ if (client->sock == -1)
+#endif
+ {
+ unsigned int host;
+
+ /* serverHost is a hostname */
+ if (!StringToIPAddr(hostname, &host)) {
+ rfbClientLog("Couldn't convert '%s' to host address\n", hostname);
+ return FALSE;
+ }
+ client->sock = ConnectClientToTcpAddr(host, port);
}
- client->sock = ConnectClientToTcpAddr(host, port);
}
if (client->sock < 0) {
@@ -421,17 +427,23 @@ ConnectToRFBServer(rfbClient* client,const char *hostname, int port)
rfbBool ConnectToRFBRepeater(rfbClient* client,const char *repeaterHost, int repeaterPort, const char *destHost, int destPort)
{
- unsigned int host;
rfbProtocolVersionMsg pv;
int major,minor;
char tmphost[250];
- if (!StringToIPAddr(repeaterHost, &host)) {
- rfbClientLog("Couldn't convert '%s' to host address\n", repeaterHost);
- return FALSE;
- }
+#ifdef LIBVNCSERVER_IPv6
+ client->sock = ConnectClientToTcpAddr6(repeaterHost, repeaterPort);
+ if (client->sock == -1)
+#endif
+ {
+ unsigned int host;
+ if (!StringToIPAddr(repeaterHost, &host)) {
+ rfbClientLog("Couldn't convert '%s' to host address\n", repeaterHost);
+ return FALSE;
+ }
- client->sock = ConnectClientToTcpAddr(host, repeaterPort);
+ client->sock = ConnectClientToTcpAddr(host, repeaterPort);
+ }
if (client->sock < 0) {
rfbClientLog("Unable to connect to VNC repeater\n");