From: Aaron Patterson Date: 2009-02-08T04:28:22+09:00 Subject: Re: [ANN] openssl-nonblock 0.1.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/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. Have you submitted patches to ruby-core? -- Aaron Patterson http://tenderlovemaking.com/