summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklós Fazekas <mfazekas@szemafor.com>2010-03-02 14:26:46 +0100
committerMiklós Fazekas <mfazekas@szemafor.com>2010-03-02 14:26:46 +0100
commitaec2c43e0ebf51aec8475d9eccbb5144148910dd (patch)
tree87c2dc75240c79978d19a50c212a28f484df0964
parent65e8aa8fceaaadf2a161ad38df52b9b21c329051 (diff)
downloadnet-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.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" }