summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/net/ssh/service/forward.rb10
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" }