• unknown's avatar
    Bug #29579 Clients using SSL can hang the server · b7527f6b
    unknown authored
    Added an option to yassl to allow "quiet shutdown" like openssl does. This option causes the SSL libs to NOT perform the close_notify handshake during shutdown. This fixes a hang we experience because we hold a lock during socket shutdown.
    
    
    mysql-test/t/ssl_big.test:
      BitKeeper file /Users/dkatz/50/mysql-test/t/ssl_big.test
    mysql-test/r/ssl-big.result:
      BitKeeper file /Users/dkatz/50/mysql-test/r/ssl-big.result
    client/mysqltest.c:
      Added new command to mysqltest to send a quit command to the server, but to not close the actual socket on our end.
      
      Also changed code to reuse connection slots, so that the tests can open and close sockets in a loop.
    extra/yassl/include/openssl/ssl.h:
      Added C accessors to the quietShutdown option.
    extra/yassl/include/yassl_int.hpp:
      Added quietShutdown_ member and accessor methods to the SSL class.
    extra/yassl/src/ssl.cpp:
      Added accessors to get/set the quietShutdown option and to not perform the shutdown handshake if quietShutdown is set.
    extra/yassl/src/yassl_int.cpp:
      Added quietShutdown_ member and accessor methods to the SSL class.
    vio/viossl.c:
      Added line to set the quiet_shutdown option before shutting down the socket.
    mysql-test/t/ssl-big.test:
      Added a test that causes an unpatched server to hang during SSL socket shutdown.
    b7527f6b
ssl.cpp 33.1 KB