Skip to content

Commit d9c050b

Browse files
committed
Use default keepalive interval if none provided
If keepalive is enabled but no interval is provided, we should use the same default interval as Net::SSH. Currently the keepalive setting is ignored unless an interval is provided.
1 parent 58851c5 commit d9c050b

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

lib/net/ssh/multi/session.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,9 @@ module Net; module SSH; module Multi
122122
class Session
123123
include SessionActions
124124

125+
# Default IO.select timeout threshold
126+
DEFAULT_IO_SELECT_TIMEOUT = 300
127+
125128
# The Net::SSH::Multi::ServerList managed by this session.
126129
attr_reader :server_list
127130

@@ -447,7 +450,7 @@ def io_select_wait(wait)
447450

448451
def keepalive_interval
449452
servers = server_list.select { |s| s.options[:keepalive] }
450-
servers.map { |s| s.options[:keepalive_interval] }.compact.min
453+
servers.map { |s| s.options[:keepalive_interval] || DEFAULT_IO_SELECT_TIMEOUT }.compact.min
451454
end
452455

453456
# Runs the preprocess stage on all servers. Returns false if the block

test/session_test.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,4 +219,10 @@ def test_process_should_pass_nil_as_io_select_timeout_by_default
219219
IO.expects(:select).with([], [], nil, nil)
220220
@session.process
221221
end
222+
223+
def test_process_should_use_default_keepalive_interval_if_none_provided
224+
@session.use('h1', :keepalive => true)
225+
IO.expects(:select).with([], [], nil, Net::SSH::Multi::Session::DEFAULT_IO_SELECT_TIMEOUT)
226+
@session.process
227+
end
222228
end

0 commit comments

Comments
 (0)