Openssl-nonblock 0.1.0

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: GitHub - tarcieri/openssl-nonblock: Non-blocking I/O support for Ruby OpenSSL
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!

On Sat, Feb 07, 2009 at 03:49:33PM +0900, Tony A. 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?

On Sat, Feb 7, 2009 at 12:28 PM, Aaron P.
<[email protected]

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

On Sun, Feb 08, 2009 at 05:05:00AM +0900, Tony A. wrote:

On Sat, Feb 7, 2009 at 12:28 PM, Aaron P. <[email protected]

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. :slight_smile: