Forum: Ruby problem reconnecting an ssl client, the ssl ruby daemon hang

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.
unknown (Guest)
on 2007-05-16 20:35
(Received via mailing list)
Hi,
I have an Lua SSL client. The first time it connects, all is fine. But
then, I kill the client. Reconnect it. After a few commands, when more
datas are sent:

# /usr/lib/ruby/1.8/openssl/buffering.rb:178: warning: error on stack:
# error:1409F07F:SSL routines:SSL3_WRITE_PENDING:bad write retry
# Exception `OpenSSL::SSL::SSLError' at
# /usr/lib/ruby/1.8/openssl/buffering.rb:178 - SSL_write:: error:
1409F07F:SSL
# routines:SSL3_WRITE_PENDING:bad write retry

It's complety reproductible. Anybody has an idea ?

Thanks, regards.

Leo

-------------

Ruby (pseudo) code I use:

    # SSL key and cert
    key = OpenSSL::PKey::RSA.new 512
    cert = OpenSSL::X509::Certificate.new
    cert.not_before = Time.now
    cert.not_after = Time.now + 3600
    cert.public_key = key.public_key
    cert.sign key, OpenSSL::Digest::SHA1.new

    # SSL context
    $ctx = OpenSSL::SSL::SSLContext.new
    $ctx.key = key
    $ctx.cert = cert

tcp_server = TCPserver.new $port
server = OpenSSL::SSL::SSLServer.new tcp_server, $ctx

while true
socket = server.accept

thread.new socket do |so|
while true
begin
       send-receive work
rescue
socket.close
end
end
end
end
Brian C. (Guest)
on 2007-05-16 21:22
(Received via mailing list)
On Thu, May 17, 2007 at 01:35:04AM +0900, removed_email_address@domain.invalid 
wrote:
> # routines:SSL3_WRITE_PENDING:bad write retry
>
> It's complety reproductible. Anybody has an idea ?

Perhaps you need to make a new SSL context for each incoming connection?
After all, each client will start a fresh SSL negotiation.
This topic is locked and can not be replied to.