SSL 通信と非 SSL 通信を切り替える機能をユーザーに提供する必要があります。これを行うために、SSL コードは特定のコマンド パケットを探し、SSL スタッフをシャットダウンして、通常の TCP/IP 通信を開始します。これはうまくいきます。ただし、SSL モードで実行するためにすべてを再起動しようとすると、SSL_accept から -2 エラーが発生します。クリーンアップしていないものがあるはずですが、クリーンアップの提案を何度も検索しても見つかりませんでした。以下に示すように、それらすべてを投入しました。
SSL_shutdown(ssl);
SSL_CTX_free(ctx);
BIO_free(acc);
CONF_modules_unload(1);
OBJ_cleanup();
EVP_cleanup();
ENGINE_cleanup();
CRYPTO_cleanup_all_ex_data();
ERR_remove_state(0);
ERR_free_strings();
その後、後片付けが残っているなんて信じられません!