# Problem reconnecting an ssl client, the ssl ruby daemon hang

**URL:** <https://www.ruby-forum.com/t/problem-reconnecting-an-ssl-client-the-ssl-ruby-daemon-hang/104318>\
**Category:** Ruby\
**Created:** [May 16, 2007, 6:35pm UTC](https://www.ruby-forum.com/t/problem-reconnecting-an-ssl-client-the-ssl-ruby-daemon-hang/104318 "2007-05-16T18:35:53Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![unknown](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/4bbf92/32.png) [@unknown](https://www.ruby-forum.com/u/unknown)\
**Post date:** [May 16, 2007, 6:35pm UTC](https://www.ruby-forum.com/t/problem-reconnecting-an-ssl-client-the-ssl-ruby-daemon-hang/104318/1 "2007-05-16T18:35:53Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![unknown](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/4bbf92/32.png) [@unknown](https://www.ruby-forum.com/u/unknown)\
**Post date:** [May 16, 2007, 7:22pm UTC](https://www.ruby-forum.com/t/problem-reconnecting-an-ssl-client-the-ssl-ruby-daemon-hang/104318/2 "2007-05-16T19:22:57Z")

</div>

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.
