Skip to content

Commit 7b6f5fb

Browse files
authored
Merge pull request #51 from eligible/master
Adding optional parameter version to SFTP::Session
2 parents c1393ae + de6290b commit 7b6f5fb

File tree

3 files changed

+13
-4
lines changed

3 files changed

+13
-4
lines changed

lib/net/sftp/session.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,9 @@ class Session
7575
#
7676
# sftp = Net::SFTP::Session.new(ssh)
7777
# sftp.loop { sftp.opening? }
78-
def initialize(session, &block)
78+
def initialize(session, version = nil, &block)
7979
@session = session
80+
@version = version
8081
@input = Net::SSH::Buffer.new
8182
self.logger = session.logger
8283
@state = :closed
@@ -876,7 +877,7 @@ def when_subsystem_started(channel, success)
876877
channel.on_close(&method(:when_channel_closed))
877878
channel.on_process(&method(:when_channel_polled))
878879

879-
send_packet(FXP_INIT, :long, HIGHEST_PROTOCOL_VERSION_SUPPORTED)
880+
send_packet(FXP_INIT, :long, @version || HIGHEST_PROTOCOL_VERSION_SUPPORTED)
880881
end
881882

882883
# Called when the SSH server closes the underlying channel.

test/common.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ def raw(*args)
3636
Net::SSH::Buffer.from(*args).to_s
3737
end
3838

39-
def sftp(options={})
40-
@sftp ||= Net::SFTP::Session.new(connection(options))
39+
def sftp(options={}, version=nil)
40+
@sftp ||= Net::SFTP::Session.new(connection(options), version)
4141
end
4242

4343
def expect_sftp_session(opts={})

test/test_session.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,14 @@ class SessionTest < Net::SFTP::TestCase
1313
end
1414
end
1515

16+
def test_passing_version_should_cause_same_version_to_be_passed_and_used
17+
version = 3
18+
expect_sftp_session :client_version => version, :server_version => version
19+
assert_scripted { sftp({},version).connect! }
20+
assert_equal version, sftp.protocol.version
21+
end
22+
23+
1624
def test_v1_open_read_only_that_succeeds_should_invoke_callback
1725
expect_open("/path/to/file", "r", nil, :server_version => 1)
1826
assert_successful_open("/path/to/file")

0 commit comments

Comments
 (0)