From: Marc Slemko Date: 2011-01-07T09:58:04+09:00 Subject: [ruby-core:34203] [Ruby 1.9-Bug#4246][Open] Net::HTTP does not timeout during SSL connection handshake --mimepart_4d26651a9e1fe_1f28b4b6e68173d Content-Type: text/plain Content-Transfer-Encoding: Quoted-printable Content-Disposition: inline Bug #4246: Net::HTTP does not timeout during SSL connection handshake http://redmine.ruby-lang.org/issues/show/4246 Author: Marc Slemko Status: Open, Priority: Normal Category: core ruby -v: ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-darwin10.5.0] = If you open a SSL connection and it hangs while doing the SSL connection = handshake then it does not timeout unless you end up hitting a TCP keepal= ive timeout. The problem is that the open_timeout is only applied to the actual TCP so= cket being opened and not the SSL negotiation. = Also an issue in ruby 1.8.{6,7}. Attached is a patch against 1.9.2. The patch also ensures that the socke= t gets closed if we error out in connect after it has been opened. ---------------------------------------- http://redmine.ruby-lang.org --mimepart_4d26651a9e1fe_1f28b4b6e68173d Content-Type: text/plain; name=net.http.ssl.connection.timeout.patch Content-Transfer-Encoding: Base64 Content-Disposition: attachment; filename=net.http.ssl.connection.timeout.patch ZGlmZiAtLWdpdCBhL2xpYi9uZXQvaHR0cC5yYiBiL2xpYi9uZXQvaHR0cC5y YgppbmRleCA1NDA3OTc1Li5lNTE2ZWNjIDEwMDY0NAotLS0gYS9saWIvbmV0 L2h0dHAucmIKKysrIGIvbGliL25ldC9odHRwLnJiCkBAIC02NjIsMjEgKzY2 MiwyNyBAQCBtb2R1bGUgTmV0ICAgIzpub2RvYzoKICAgICAgIEBzb2NrZXQu cmVhZF90aW1lb3V0ID0gQHJlYWRfdGltZW91dAogICAgICAgQHNvY2tldC5k ZWJ1Z19vdXRwdXQgPSBAZGVidWdfb3V0cHV0CiAgICAgICBpZiB1c2Vfc3Ns PwotICAgICAgICBpZiBwcm94eT8KLSAgICAgICAgICBAc29ja2V0LndyaXRl bGluZSBzcHJpbnRmKCdDT05ORUNUICVzOiVzIEhUVFAvJXMnLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGFkZHJlc3MsIEBwb3J0 LCBIVFRQVmVyc2lvbikKLSAgICAgICAgICBAc29ja2V0LndyaXRlbGluZSAi SG9zdDogI3tAYWRkcmVzc306I3tAcG9ydH0iCi0gICAgICAgICAgaWYgcHJv eHlfdXNlcgotICAgICAgICAgICAgY3JlZGVudGlhbCA9IFsiI3twcm94eV91 c2VyfToje3Byb3h5X3Bhc3N9Il0ucGFjaygnbScpCi0gICAgICAgICAgICBj cmVkZW50aWFsLmRlbGV0ZSEoIlxyXG4iKQotICAgICAgICAgICAgQHNvY2tl dC53cml0ZWxpbmUgIlByb3h5LUF1dGhvcml6YXRpb246IEJhc2ljICN7Y3Jl ZGVudGlhbH0iCisgICAgICAgIGJlZ2luCisgICAgICAgICAgaWYgcHJveHk/ CisgICAgICAgICAgICBAc29ja2V0LndyaXRlbGluZSBzcHJpbnRmKCdDT05O RUNUICVzOiVzIEhUVFAvJXMnLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBAYWRkcmVzcywgQHBvcnQsIEhUVFBWZXJzaW9uKQor ICAgICAgICAgICAgQHNvY2tldC53cml0ZWxpbmUgIkhvc3Q6ICN7QGFkZHJl c3N9OiN7QHBvcnR9IgorICAgICAgICAgICAgaWYgcHJveHlfdXNlcgorICAg ICAgICAgICAgICBjcmVkZW50aWFsID0gWyIje3Byb3h5X3VzZXJ9OiN7cHJv eHlfcGFzc30iXS5wYWNrKCdtJykKKyAgICAgICAgICAgICAgY3JlZGVudGlh bC5kZWxldGUhKCJcclxuIikKKyAgICAgICAgICAgICAgQHNvY2tldC53cml0 ZWxpbmUgIlByb3h5LUF1dGhvcml6YXRpb246IEJhc2ljICN7Y3JlZGVudGlh bH0iCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIEBzb2NrZXQud3Jp dGVsaW5lICcnCisgICAgICAgICAgICBIVFRQUmVzcG9uc2UucmVhZF9uZXco QHNvY2tldCkudmFsdWUKICAgICAgICAgICBlbmQKLSAgICAgICAgICBAc29j a2V0LndyaXRlbGluZSAnJwotICAgICAgICAgIEhUVFBSZXNwb25zZS5yZWFk X25ldyhAc29ja2V0KS52YWx1ZQotICAgICAgICBlbmQKLSAgICAgICAgcy5j b25uZWN0Ci0gICAgICAgIGlmIEBzc2xfY29udGV4dC52ZXJpZnlfbW9kZSAh PSBPcGVuU1NMOjpTU0w6OlZFUklGWV9OT05FCi0gICAgICAgICAgcy5wb3N0 X2Nvbm5lY3Rpb25fY2hlY2soQGFkZHJlc3MpCisgICAgICAgICAgdGltZW91 dChAb3Blbl90aW1lb3V0KSB7IHMuY29ubmVjdCB9CisgICAgICAgICAgaWYg QHNzbF9jb250ZXh0LnZlcmlmeV9tb2RlICE9IE9wZW5TU0w6OlNTTDo6VkVS SUZZX05PTkUKKyAgICAgICAgICAgIHMucG9zdF9jb25uZWN0aW9uX2NoZWNr KEBhZGRyZXNzKQorICAgICAgICAgIGVuZAorICAgICAgICByZXNjdWUgPT4g ZXhjZXB0aW9uCisgICAgICAgICAgRCAiQ29ubiBjbG9zZSBiZWNhdXNlIG9m IGNvbm5lY3QgZXJyb3IgI3tleGNlcHRpb259IgorICAgICAgICAgIEBzb2Nr ZXQuY2xvc2UgaWYgQHNvY2tldCBhbmQgbm90IEBzb2NrZXQuY2xvc2VkPwor ICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbgogICAgICAgICBlbmQKICAgICAg IGVuZAogICAgICAgb25fY29ubmVjdAo= --mimepart_4d26651a9e1fe_1f28b4b6e68173d--