[MacRuby-devel] [MacRuby] #215: OpenSSL's SSLSocket appears not to be initialised correctly
MacRuby
ruby-noreply at macosforge.org
Sun Jan 25 18:44:15 PST 2009
#215: OpenSSL's SSLSocket appears not to be initialised correctly
-------------------------------+--------------------------------------------
Reporter: celtic@… | Owner: lsansonetti@…
Type: defect | Status: new
Priority: major | Milestone:
Component: MacRuby | Keywords: openssl
-------------------------------+--------------------------------------------
When using net/https, the line to create the new SSLSocket in `connect'
fails in OpenSSL::SSL::Nonblock, trying to call @io.fcntl and failing
since @io==nil.
@io should be being set in OpenSSL's ossl_ssl.c:ossl_ssl_initialize;
"ossl_ssl_set_io(self, io)"; but this function appears never to be called!
(I tried inserting various rb_warns throughout, before finally just
sticking in a call to exit() -- it's not being touched)
This appears to be the only place where @io is being set. It disturbs me
that the C initialiser is not being run - I am not sure if this is a
documented issue or not, or if it's even a MacRuby bug (I'm quite new to
all this).
This problem can be 'fixed' in the meantime by rewriting
SSLSocket#initialize in Ruby-land:
{{{
def initialize io, ctx=nil
ctx = SSLContext.new if ctx.nil?
raise "wrong argument (#{ctx.class})! (Expected kind of
SSLContext)" if not ctx.kind_of? SSLContext
raise "wrong argument (#{io.class})! (Expected kind of IO)" if not
io.kind_of? IO
@io, @ctx = io, ctx
@sync_close = false
@ctx.setup
super
end
}}}
ossl_ssl_initialize can be removed from ossl_ssl.c after this.
Unfortunately, we just run into another bug in ossl_ssl_setup, which has
to do with an SSLContext, trying to work out if it's related now.
--
Ticket URL: <http://www.macruby.org/trac/ticket/215>
MacRuby <http://macruby.org/>
More information about the MacRuby-devel
mailing list