- markus@cvs.openbsd.org 2007/06/11 08:04:44
     [channels.c]
     send 'window adjust' messages every tree packets and do not wait
     until 50% of the window is consumed.  ok djm dtucker
diff --git a/ChangeLog b/ChangeLog
index bb9c598..3a7a497 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -24,6 +24,10 @@
      [sshd_config.5]
      oops, here too: put the MAC list into a display, like we do for
      ciphers, since groff has trouble with wide lines;
+   - markus@cvs.openbsd.org 2007/06/11 08:04:44
+     [channels.c]
+     send 'window adjust' messages every tree packets and do not wait
+     until 50% of the window is consumed.  ok djm dtucker
  - (djm) [configure.ac umac.c] If platform doesn't provide swap32(3), then
    fallback to provided bit-swizzing functions
  - (dtucker) [openbsd-compat/bsd-misc.c] According to the spec the "remainder"
@@ -3007,4 +3011,4 @@
    OpenServer 6 and add osr5bigcrypt support so when someone migrates
    passwords between UnixWare and OpenServer they will still work. OK dtucker@
 
-$Id: ChangeLog,v 1.4687 2007/06/11 04:44:02 dtucker Exp $
+$Id: ChangeLog,v 1.4688 2007/06/11 08:33:15 djm Exp $
diff --git a/channels.c b/channels.c
index bb14450..1d5b1f1 100644
--- a/channels.c
+++ b/channels.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: channels.c,v 1.268 2007/01/03 03:01:40 stevesk Exp $ */
+/* $OpenBSD: channels.c,v 1.269 2007/06/11 08:04:44 markus Exp $ */
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -1657,7 +1657,9 @@
 {
 	if (c->type == SSH_CHANNEL_OPEN &&
 	    !(c->flags & (CHAN_CLOSE_SENT|CHAN_CLOSE_RCVD)) &&
-	    c->local_window < c->local_window_max/2 &&
+	    ((c->local_window_max - c->local_window <
+	    c->local_maxpacket*3) ||
+	    c->local_window < c->local_window_max/2) &&
 	    c->local_consumed > 0) {
 		packet_start(SSH2_MSG_CHANNEL_WINDOW_ADJUST);
 		packet_put_int(c->remote_id);