summaryrefslogtreecommitdiff
path: root/ext/socket
diff options
context:
space:
mode:
Diffstat (limited to 'ext/socket')
-rw-r--r--ext/socket/lib/socket.rb9
1 files changed, 8 insertions, 1 deletions
diff --git a/ext/socket/lib/socket.rb b/ext/socket/lib/socket.rb
index 9862c92c0b..f47b5bc1d1 100644
--- a/ext/socket/lib/socket.rb
+++ b/ext/socket/lib/socket.rb
@@ -948,7 +948,14 @@ class Socket < BasicSocket
local_addr = nil
end
begin
- timeout = open_timeout ? open_timeout - (current_clock_time - starts_at) : connect_timeout
+ timeout =
+ if open_timeout
+ t = open_timeout - (current_clock_time - starts_at)
+ t.negative? ? 0 : t
+ else
+ connect_timeout
+ end
+
sock = local_addr ?
ai.connect_from(local_addr, timeout:) :
ai.connect(timeout:)