Forum: Ruby openssl-nonblock 0.1.0

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
2f55791ab9018b4d01fb741fab21843d?d=identicon&s=25 Tony Arcieri (Guest)
on 2009-02-07 07:50
(Received via mailing list)
Hi folks,

I've seen various requests for non-blocking OpenSSL support.  As a
maintainer of a non-blocking event library this was crucial for the
stuff I
was doing.  I developed a C extension which uses some pretty crazy hacks
to
patch non-blocking support into the existing OpenSSL C extension.

As this can benefit people who aren't using my event library, I've gone
ahead and rolled this functionality into its own gem, which works on
1.8.6,
1.8.7, and 1.9.1:

github: http://github.com/tarcieri/openssl-nonblock/tree/master
rubyforge: http://rubyforge.org/frs/shownotes.php?release_id=31150

This gem adds an additional four methods to OpenSSL::SSL::SSLSocket:
connect_nonblock, accept_nonblock, read_nonblock, and write_nonblock.
It
also adds an additional two exceptions: OpenSSL::SSL::ReadAgain and
OpenSSL::SSL::WriteAgain to handle cases where the system isn't ready to
perform the given I/O request.

I've seen some patches for this on the 1.9 Redmine (e.g.
http://redmine.ruby-lang.org/issues/show/814) but they aren't
comprehensive
and don't address connect_nonblock and accept_nonblock.

I hope these issues get addressed by ruby-core eventually, but with this
gem
you can have non-blocking SSL I/O today.

And if you're interested in non-blocking I/O in general, you might want
to
check out my event framework:

http://rev.rubyforge.org/

Enjoy!
Be30361bb0b0c495e3077db43ad84b56?d=identicon&s=25 Aaron Patterson (Guest)
on 2009-02-07 20:29
(Received via mailing list)
On Sat, Feb 07, 2009 at 03:49:33PM +0900, Tony Arcieri wrote:
>
> http://redmine.ruby-lang.org/issues/show/814) but they aren't comprehensive
> and don't address connect_nonblock and accept_nonblock.
>
> I hope these issues get addressed by ruby-core eventually, but with this gem
> you can have non-blocking SSL I/O today.

Have you submitted patches to ruby-core?
2f55791ab9018b4d01fb741fab21843d?d=identicon&s=25 Tony Arcieri (Guest)
on 2009-02-07 21:06
(Received via mailing list)
On Sat, Feb 7, 2009 at 12:28 PM, Aaron Patterson
<aaron@tenderlovemaking.com
> wrote:

> Have you submitted patches to ruby-core?
>

Not as yet, I decided I'd go through the few hour process of releasing
them
as a gem before going through the multi-month process of getting them
accepted into Ruby 1.9.2
Be30361bb0b0c495e3077db43ad84b56?d=identicon&s=25 Aaron Patterson (Guest)
on 2009-02-08 06:55
(Received via mailing list)
On Sun, Feb 08, 2009 at 05:05:00AM +0900, Tony Arcieri wrote:
> On Sat, Feb 7, 2009 at 12:28 PM, Aaron Patterson <aaron@tenderlovemaking.com
> > wrote:
>
> > Have you submitted patches to ruby-core?
> >
>
> Not as yet, I decided I'd go through the few hour process of releasing them
> as a gem before going through the multi-month process of getting them
> accepted into Ruby 1.9.2

My OpenSSL patch was accepted in less than 24 hours....

  http://redmine.ruby-lang.org/issues/show/814

Open Date was 12/03/08, closed 12/04/08

If you don't want to do it, I don't mind.  I'd definitely like to see
these in ruby-core.  :-)
This topic is locked and can not be replied to.