diff options
Diffstat (limited to 'common/rfb/SConnection.cxx')
-rw-r--r-- | common/rfb/SConnection.cxx | 29 |
1 files changed, 12 insertions, 17 deletions
diff --git a/common/rfb/SConnection.cxx b/common/rfb/SConnection.cxx index deaa9668..130170f2 100644 --- a/common/rfb/SConnection.cxx +++ b/common/rfb/SConnection.cxx @@ -253,23 +253,18 @@ void SConnection::offerAuthentication() if (caps.getSize() < 1) throwConnFailedException("No supported security types"); - // FIXME: We should never send an empty capability list if we are prompting - // local user to accept client connections. And if we do send an - // empty list, then we cannot send a "security result". - 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. - 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; - } + // 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; } void SConnection::processAuthTypeMsg() |