diff options
author | Miklós Fazekas <mfazekas@szemafor.com> | 2010-03-02 14:26:46 +0100 |
---|---|---|
committer | Miklós Fazekas <mfazekas@szemafor.com> | 2010-03-02 14:26:46 +0100 |
commit | aec2c43e0ebf51aec8475d9eccbb5144148910dd (patch) | |
tree | 87c2dc75240c79978d19a50c212a28f484df0964 | |
parent | 65e8aa8fceaaadf2a161ad38df52b9b21c329051 (diff) | |
download | net-ssh-aec2c43e0ebf51aec8475d9eccbb5144148910dd.tar.gz |
Bugfix test:Handling eof from client, sending pending bytes and closing forwarded chanell
-rw-r--r-- | lib/net/ssh/service/forward.rb | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/net/ssh/service/forward.rb b/lib/net/ssh/service/forward.rb index 4338f91..6a1254a 100644 --- a/lib/net/ssh/service/forward.rb +++ b/lib/net/ssh/service/forward.rb @@ -239,9 +239,17 @@ module Net; module SSH; module Service session.listen_to(client) channel[:socket] = client - channel.on_data do |ch, data| + channel.on_data do |ch, data| + debug { "data:#{data.length} on #{type} forwarded channel" } ch[:socket].enqueue(data) end + + channel.on_eof do |ch| + debug { "eof #{type} on #{type} forwarded channel" } + ch[:socket].send_pending + ch[:socket].close if !client.closed? + session.stop_listening_to(ch[:socket]) + end channel.on_close do |ch| debug { "closing #{type} forwarded channel" } |