summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorBenoit Daloze <eregontp@gmail.com>2025-12-08 13:06:08 +0100
committerHiroshi SHIBATA <hsbt@ruby-lang.org>2025-12-26 11:00:51 +0900
commitfda7019c80c1026ee89ba772fb7db547c89e541a (patch)
tree1add40e0d00a7b885efc36e830c0422002e29ca3 /lib
parent4d7db86a794581f1be405dcc70bb06549b8cf28f (diff)
[ruby/net-protocol] Add Net::Protocol::TCP_SOCKET_NEW_HAS_OPEN_TIMEOUT
* To find out efficiently if TCPSocket#initialize supports the open_timeout keyword argument. https://github.com/ruby/net-protocol/commit/738c06f950
Diffstat (limited to 'lib')
-rw-r--r--lib/net/protocol.rb10
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/net/protocol.rb b/lib/net/protocol.rb
index 1443f3e8b7..8c81298c0e 100644
--- a/lib/net/protocol.rb
+++ b/lib/net/protocol.rb
@@ -54,6 +54,16 @@ module Net # :nodoc:
s.connect
end
end
+
+ tcp_socket_parameters = TCPSocket.instance_method(:initialize).parameters
+ TCP_SOCKET_NEW_HAS_OPEN_TIMEOUT = if tcp_socket_parameters != [[:rest]]
+ tcp_socket_parameters.include?([:key, :open_timeout])
+ else
+ # Use Socket.tcp to find out since there is no parameters information for TCPSocket#initialize
+ # See discussion in https://github.com/ruby/net-http/pull/224
+ Socket.method(:tcp).parameters.include?([:key, :open_timeout])
+ end
+ private_constant :TCP_SOCKET_NEW_HAS_OPEN_TIMEOUT
end