diff options
-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" } |