• Vladislav Vaintroub's avatar
    A recent change in the server protocol code broke SSL connection for some client libraries. · b3e15f83
    Vladislav Vaintroub authored
    Protocol documentation (http://forge.mysql.com/wiki/MySQL_Internals_ClientServer_Protocol)
    says that initial packet sent by client if client wants SSL, consists of client capability flags only
    (4 bytes or 2 bytes edependent on protocol versionl). 
    Some clients happen to send more in the initial SSL packet (C client, Python connector), while others (Java, .NET) follow the docs and send only client capability flags.
    
    A change that broke Java client was a newly introduced check that frst client packet
    has 32 or more bytes. This is generally wrong, if client capability flags contains CLIENT_SSL.
    
    Also, fixed the code such that read max client packet size and charset in the first packet prior to SSL handshake.  With SSL, clients do not have to send this info, they can only send client flags.
    
    This is now fixed such that max packet size and charset are not read prior to SSL handshake, in case of SSL they are read from the "complete" client authentication packet after SSL initialization.
    b3e15f83
sql_connect.cc 35.6 KB