From: Eric Wong Date: 2017-10-16T20:14:31+00:00 Subject: [ruby-core:83315] Re: [Ruby trunk Bug#14013] [PATCH] Webrick 60172 fix Odd, so using IO#wait_*able methods doesn't work for you, but IO.select does? Can you try the following patch? It's basically your patch with "writable" spelled correctly: ``` diff --git a/lib/webrick/server.rb b/lib/webrick/server.rb index 2d678273e5..25d507b67d 100644 --- a/lib/webrick/server.rb +++ b/lib/webrick/server.rb @@ -299,8 +299,10 @@ def start_thread(sock, &block) # we must call OpenSSL::SSL::SSLSocket#accept_nonblock until # it stop returning wait_* symbols: case ret = sock.accept_nonblock(exception: false) - when :wait_readable, :wait_writable - sock.to_io.__send__(ret) + when :wait_readable + IO.select([sock]) + when :wait_writable + IO.select(nil, [sock]) else break end while true ``` I guess your original didn't loop on "while true", either, but it really should (to properly finish the negotiation). There's also no need to call .to_io with IO.select, as it's already done transparently. (The reason I favor IO#wait_readable and IO#wait_writable is it is optimized under Linux) I won't be using proprietary services like GitHub, so I'll let you handle the testing. Can you repeat this failure on a local machine or using something like ssh? Unsubscribe: