mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
61a3fff661
* ext/openssl/lib/openssl/ssl.rb (SSLSocket): Move the implementation of SSLSocket#initialize to C. Initialize the SSL (OpenSSL object) in it. Currently this is delayed until ossl_ssl_setup(), which is called from SSLSocket#accept or #connect. Say we call SSLSocket#hostname= with an illegal value. We expect an exception to be raised in #hostname= but actually we get it in the later SSLSocket#connect. Because the SSL is not ready at #hostname=, the actual call of SSL_set_tlsext_host_name() is also delayed. This also fixes: [ruby-dev:49376] [Bug #11724] * ext/openssl/ossl_ssl.c (ossl_ssl_initialize): Added. Almost the same as the Ruby version but this instantiate the SSL object at the same time. (ossl_ssl_setup): Adjust to the changes. Just set the underlying IO to the SSL. (ssl_started): Added. Make use of SSL_get_fd(). This returns -1 if not yet set by SSL_set_fd(). (ossl_ssl_data_get_struct): Removed. Now GetSSL() checks that the SSL exists. (ossl_ssl_set_session): Don't call ossl_ssl_setup() here as now the SSL is already instantiated in #initialize. (ossl_ssl_shutdown, ossl_start_ssl, ossl_ssl_read_internal, ossl_ssl_write_internal, ossl_ssl_stop, ossl_ssl_get_cert, ossl_ssl_get_peer_cert, ossl_ssl_get_peer_cert_chain, ossl_ssl_get_version, ossl_ssl_get_cipher, ossl_ssl_get_state, ossl_ssl_pending, ossl_ssl_session_reused, ossl_ssl_get_verify_result, ossl_ssl_get_client_ca_list, ossl_ssl_npn_protocol, ossl_ssl_alpn_protocol, ossl_ssl_tmp_key): Use GetSSL() instead of ossl_ssl_data_get_struct(). Use ssl_started(). (Init_ossl_ssl): Add method declarations of SSLSocket#{initialize, hostname=}. * ext/openssl/ossl_ssl.h (GetSSL): Check that the SSL is not NULL. It should not be NULL because we now set it in #initialize. * ext/openssl/ossl_ssl_session.c (ossl_ssl_session_initialize): No need to check if the SSL is NULL. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55191 b2dd03c8-39d4-4d8f-98ff-823fe69b080e |
||
---|---|---|
.. | ||
lib | ||
depend | ||
deprecation.rb | ||
extconf.rb | ||
openssl_missing.c | ||
openssl_missing.h | ||
ossl.c | ||
ossl.h | ||
ossl_asn1.c | ||
ossl_asn1.h | ||
ossl_bio.c | ||
ossl_bio.h | ||
ossl_bn.c | ||
ossl_bn.h | ||
ossl_cipher.c | ||
ossl_cipher.h | ||
ossl_config.c | ||
ossl_config.h | ||
ossl_digest.c | ||
ossl_digest.h | ||
ossl_engine.c | ||
ossl_engine.h | ||
ossl_hmac.c | ||
ossl_hmac.h | ||
ossl_ns_spki.c | ||
ossl_ns_spki.h | ||
ossl_ocsp.c | ||
ossl_ocsp.h | ||
ossl_pkcs5.c | ||
ossl_pkcs5.h | ||
ossl_pkcs7.c | ||
ossl_pkcs7.h | ||
ossl_pkcs12.c | ||
ossl_pkcs12.h | ||
ossl_pkey.c | ||
ossl_pkey.h | ||
ossl_pkey_dh.c | ||
ossl_pkey_dsa.c | ||
ossl_pkey_ec.c | ||
ossl_pkey_rsa.c | ||
ossl_rand.c | ||
ossl_rand.h | ||
ossl_ssl.c | ||
ossl_ssl.h | ||
ossl_ssl_session.c | ||
ossl_version.h | ||
ossl_x509.c | ||
ossl_x509.h | ||
ossl_x509attr.c | ||
ossl_x509cert.c | ||
ossl_x509crl.c | ||
ossl_x509ext.c | ||
ossl_x509name.c | ||
ossl_x509req.c | ||
ossl_x509revoked.c | ||
ossl_x509store.c | ||
ruby_missing.h |