diff --git a/ssh/channel.go b/ssh/channel.go index 8518d49..28b0e38 100644 --- a/ssh/channel.go +++ b/ssh/channel.go @@ -149,6 +149,9 @@ func (c *channel) handlePacket(packet interface{}) { case *channelEOFMsg: c.theySentEOF = true c.cond.Signal() + case *windowAdjustMsg: + c.theirWindow += packet.AdditionalBytes + c.cond.Signal() default: panic("unknown packet type") } diff --git a/ssh/server.go b/ssh/server.go index 9cefda0..e669b5c 100644 --- a/ssh/server.go +++ b/ssh/server.go @@ -570,6 +570,16 @@ func (s *ServerConn) Accept() (Channel, error) { c.handlePacket(msg) s.lock.Unlock() + case *windowAdjustMsg: + s.lock.Lock() + c, ok := s.channels[msg.PeersId] + if !ok { + s.lock.Unlock() + continue + } + c.handlePacket(msg) + s.lock.Unlock() + case *channelEOFMsg: s.lock.Lock() c, ok := s.channels[msg.PeersId]