|
|
|
@ -120,6 +120,9 @@ rfbClient* rfbGetClient(int bitsPerSample,int samplesPerPixel,
|
|
|
|
|
client->serverHost=strdup("");
|
|
|
|
|
client->serverPort=5900;
|
|
|
|
|
|
|
|
|
|
client->destHost = NULL;
|
|
|
|
|
client->destPort = 5900;
|
|
|
|
|
|
|
|
|
|
client->CurrentKeyboardLedState = 0;
|
|
|
|
|
client->HandleKeyboardLedState = (HandleKeyboardLedStateProc)DummyPoint;
|
|
|
|
|
|
|
|
|
@ -202,8 +205,15 @@ static rfbBool rfbInitConnection(rfbClient* client)
|
|
|
|
|
given VNC server */
|
|
|
|
|
|
|
|
|
|
if (!client->listenSpecified) {
|
|
|
|
|
if (!client->serverHost || !ConnectToRFBServer(client,client->serverHost,client->serverPort))
|
|
|
|
|
if (!client->serverHost)
|
|
|
|
|
return FALSE;
|
|
|
|
|
if (client->destHost) {
|
|
|
|
|
if (!ConnectToRFBRepeater(client,client->serverHost,client->serverPort,client->destHost,client->destPort))
|
|
|
|
|
return FALSE;
|
|
|
|
|
} else {
|
|
|
|
|
if (!ConnectToRFBServer(client,client->serverHost,client->serverPort))
|
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Initialise the VNC connection, including reading the password */
|
|
|
|
@ -278,6 +288,19 @@ rfbBool rfbInitClient(rfbClient* client,int* argc,char** argv) {
|
|
|
|
|
} else if (i+1<*argc && strcmp(argv[i], "-scale") == 0) {
|
|
|
|
|
client->appData.scaleSetting = atoi(argv[i+1]);
|
|
|
|
|
j+=2;
|
|
|
|
|
} else if (i+1<*argc && strcmp(argv[i], "-repeaterdest") == 0) {
|
|
|
|
|
char* colon=strchr(argv[i+1],':');
|
|
|
|
|
|
|
|
|
|
if(client->destHost)
|
|
|
|
|
free(client->destHost);
|
|
|
|
|
client->destPort = 5900;
|
|
|
|
|
|
|
|
|
|
client->destHost = strdup(argv[i+1]);
|
|
|
|
|
if(colon) {
|
|
|
|
|
client->destHost[(int)(colon-argv[i+1])] = '\0';
|
|
|
|
|
client->destPort = atoi(colon+1);
|
|
|
|
|
}
|
|
|
|
|
j+=2;
|
|
|
|
|
} else {
|
|
|
|
|
char* colon=strchr(argv[i],':');
|
|
|
|
|
|
|
|
|
@ -342,6 +365,8 @@ void rfbClientCleanup(rfbClient* client) {
|
|
|
|
|
close(client->listenSock);
|
|
|
|
|
free(client->desktopName);
|
|
|
|
|
free(client->serverHost);
|
|
|
|
|
if (client->destHost)
|
|
|
|
|
free(client->destHost);
|
|
|
|
|
if (client->clientAuthSchemes)
|
|
|
|
|
free(client->clientAuthSchemes);
|
|
|
|
|
free(client);
|
|
|
|
|