[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

[ANN] openssl-nonblock 0.1.0

Tony Arcieri

2/7/2009 6:50:00 AM

[Note: parts of this message were removed to make it a legal post.]

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/t...
rubyforge: http://rubyforge.org/frs/shownotes.php?releas...

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/issue...) 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.ruby...

Enjoy!

--
Tony Arcieri

3 Answers

Aaron Patterson

2/7/2009 7:28:00 PM

0

On Sat, Feb 07, 2009 at 03:49:33PM +0900, Tony Arcieri wrote:
> 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/t...
> rubyforge: http://rubyforge.org/frs/shownotes.php?releas...
>
> 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/issue...) 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?

--
Aaron Patterson
http://tenderlovem...

Tony Arcieri

2/7/2009 8:05:00 PM

0

[Note: parts of this message were removed to make it a legal post.]

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

--
Tony Arcieri
medioh.com

Aaron Patterson

2/8/2009 5:53:00 AM

0

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/issue...

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

--
Aaron Patterson
http://tenderlovem...