]> source.dussan.org Git - tigervnc.git/commitdiff
Reverted the changes appeared in revisions 2173,2181. We better always send the ...
authorConstantin Kaplinsky <const@tightvnc.com>
Fri, 8 Dec 2006 04:19:48 +0000 (04:19 +0000)
committerConstantin Kaplinsky <const@tightvnc.com>
Fri, 8 Dec 2006 04:19:48 +0000 (04:19 +0000)
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@2189 3789f03b-4d11-0410-bbf8-ca57d06f2519

common/rfb/SConnection.cxx

index 130170f2187b18e64ce4c4a3a75ac4f1f501b4ba..9e47900ea912f2c1161f5152e5ca2260bb751979 100644 (file)
@@ -253,18 +253,22 @@ void SConnection::offerAuthentication()
   if (caps.getSize() < 1)
     throwConnFailedException("No supported security types");
 
-  // FIXME: We could send an empty capability list if we do not require
-  //        authentication and any local user interaction. But the problem
-  //        is that this class does not know if local user will be prompted
-  //        to accept/reject connection.
-  //        Thus, currently we always send non-empty capability lists,
-  //        although this is not compatible with certain TightVNC viewers
-  //        that do not understand authentication type "AuthNone" and expect
-  //        an empty capability list for no authentication.
-  os->writeU32(caps.getSize());
-  caps.write(os);
-  os->flush();
-  state_ = RFBSTATE_TIGHT_AUTH_TYPE;
+  if (caps.includesOnly(secTypeNone)) {
+    // Special case - if caps includes nothing else than secTypeNone, we send
+    // an empty capability list and do not expect security type selection from
+    // the client. Then, continue the protocol like if the client has selected
+    // secTypeNone (starting at base protocol version 3.8, "security result"
+    // will follow).
+    os->writeU32(0);
+    os->flush();
+    processSecurityType(secTypeNone);
+  } else {
+    // Normal case - sending the list of authentication capabilities.
+    os->writeU32(caps.getSize());
+    caps.write(os);
+    os->flush();
+    state_ = RFBSTATE_TIGHT_AUTH_TYPE;
+  }
 }
 
 void SConnection::processAuthTypeMsg()