summaryrefslogtreecommitdiffstats
path: root/libvncserver/rfbserver.c
diff options
context:
space:
mode:
Diffstat (limited to 'libvncserver/rfbserver.c')
-rw-r--r--libvncserver/rfbserver.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/libvncserver/rfbserver.c b/libvncserver/rfbserver.c
index 745589e..1f71a18 100644
--- a/libvncserver/rfbserver.c
+++ b/libvncserver/rfbserver.c
@@ -487,6 +487,9 @@ rfbProcessClientMessage(rfbClientPtr cl)
case RFB_PROTOCOL_VERSION:
rfbProcessClientProtocolVersion(cl);
return;
+ case RFB_SECURITY_TYPE:
+ rfbProcessClientSecurityType(cl);
+ return;
case RFB_AUTHENTICATION:
rfbAuthProcessClientMessage(cl);
return;
@@ -545,9 +548,17 @@ rfbProcessClientProtocolVersion(rfbClientPtr cl)
return;
}
- if (minor_ != rfbProtocolMinorVersion) {
- /* Minor version mismatch - warn but try to continue */
- rfbLog("Ignoring minor version mismatch\n");
+ // Chk for the minor version use either of the two standard version of RFB
+ cl->protocolMinorVersion = minor_;
+ if (minor_ > rfbProtocolMinorVersion) {
+ cl->protocolMinorVersion = rfbProtocolMinorVersion;
+ } else if (minor_ < rfbProtocolMinorVersion) {
+ cl->protocolMinorVersion = rfbProtocolFallbackMinorVersion;
+ }
+ if (minor_ != rfbProtocolMinorVersion &&
+ minor_ != rfbProtocolFallbackMinorVersion) {
+ rfbLog("Non-standard protocol version %d.%d, using %d.%d instead\n",
+ major_, minor_, rfbProtocolMajorVersion, cl->protocolMinorVersion);
}
rfbAuthNewClient(cl);