1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/ext
rhe 61a3fff661 openssl: move SSLSocket#initialize to C extension
* 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
2016-05-28 05:00:36 +00:00
..
-test- -test-/integer 2016-05-22 07:27:02 +00:00
bigdecimal missing.h: isfinite 2016-05-23 12:33:39 +00:00
cgi/escape cgi/util.rb: remove CGI::Util#_unescape 2016-04-20 08:33:33 +00:00
continuation
coverage Update dependencies. 2016-04-11 11:50:00 +00:00
date fix typos [ci skip] 2016-05-20 13:21:55 +00:00
dbm remove unnecessary volatiles 2016-05-23 04:31:55 +00:00
digest Update dependencies. 2016-04-11 11:50:00 +00:00
etc
fcntl
fiber
fiddle fiddle/import.rb: suppress warnings 2016-04-11 04:28:16 +00:00
gdbm
io io/console: bump up 2016-04-15 06:15:54 +00:00
json [Feature #12005] Unify Fixnum and Bignum into Integer 2016-05-17 06:53:48 +00:00
mathn
nkf Update dependencies. 2016-04-11 11:50:00 +00:00
objspace objspace_dump.c: fix format 2016-05-08 09:59:36 +00:00
openssl openssl: move SSLSocket#initialize to C extension 2016-05-28 05:00:36 +00:00
pathname
psych stdlib: avoid extra calls to eliminate "\n" from Base64 2016-01-10 00:35:43 +00:00
pty pty.c: dry up 2016-04-30 01:12:52 +00:00
racc/cparse
rbconfig/sizeof rbconfig/sizeof: calculate at compilation time 2016-04-25 05:39:12 +00:00
readline Update dependencies. 2016-04-11 11:50:00 +00:00
ripper ripper: fix ripper.E 2016-04-25 07:56:06 +00:00
sdbm remove unnecessary volatiles 2016-05-23 04:31:55 +00:00
socket Update dependencies. 2016-04-11 11:50:00 +00:00
stringio stringio.c: warn block for new 2016-04-27 06:47:56 +00:00
strscan Update dependencies. 2016-04-11 11:50:00 +00:00
syslog Update dependencies. 2016-04-11 11:50:00 +00:00
tk tcltklib.c: elimitate dead code 2016-05-23 04:40:43 +00:00
win32 registry.rb: fix API names 2016-04-10 11:54:17 +00:00
win32ole win32ole.c: share the content 2016-05-20 12:17:14 +00:00
zlib * ext/zlib/zlib.c: remove hacky macro introduced at r30437. 2016-05-21 17:47:52 +00:00
.document
extmk.rb extmk.rb: fix skipping messages 2016-05-16 00:16:13 +00:00
Setup ext/thread: remove 2016-04-30 02:56:17 +00:00
Setup.atheos cgi/escape: Optimize CGI.escapeHTML 2015-12-20 11:54:54 +00:00
Setup.nacl cgi/escape: Optimize CGI.escapeHTML 2015-12-20 11:54:54 +00:00
Setup.nt cgi/escape: Optimize CGI.escapeHTML 2015-12-20 11:54:54 +00:00