From: djm Date: Tue, 22 Jan 2002 12:34:52 +0000 (+0000) Subject: - markus@cvs.openbsd.org 2002/01/21 23:27:10 X-Git-Tag: V_3_1_P1~135 X-Git-Url: http://andersk.mit.edu/gitweb/openssh.git/commitdiff_plain/32e7d71fe730488663ad80dc00af8c914d2cd92f - markus@cvs.openbsd.org 2002/01/21 23:27:10 [channels.c nchan.c] cleanup channels faster if the are empty and we are in drain-state; ok deraadt@ --- diff --git a/ChangeLog b/ChangeLog index bf06f2fa..52b8d436 100644 --- a/ChangeLog +++ b/ChangeLog @@ -219,6 +219,10 @@ [cipher.c compat.c myproposal.h] remove "rijndael-*", just use "aes-" since this how rijndael is called in the drafts; ok stevesk@ + - markus@cvs.openbsd.org 2002/01/21 23:27:10 + [channels.c nchan.c] + cleanup channels faster if the are empty and we are in drain-state; + ok deraadt@ 20020121 - (djm) Rework ssh-rand-helper: diff --git a/channels.c b/channels.c index 03f12d39..73bc10a1 100644 --- a/channels.c +++ b/channels.c @@ -39,7 +39,7 @@ */ #include "includes.h" -RCSID("$OpenBSD: channels.c,v 1.160 2002/01/16 13:17:51 markus Exp $"); +RCSID("$OpenBSD: channels.c,v 1.161 2002/01/21 23:27:10 markus Exp $"); #include "ssh.h" #include "ssh1.h" @@ -1793,6 +1793,8 @@ channel_input_ieof(int type, u_int32_t seq, void *ctxt) if (c->force_drain && c->istate == CHAN_INPUT_OPEN) { debug("channel %d: FORCE input drain", c->self); c->istate = CHAN_INPUT_WAIT_DRAIN; + if (buffer_len(&c->input) == 0) + chan_ibuf_empty(c); } } diff --git a/nchan.c b/nchan.c index 070f14a7..fc8e7f18 100644 --- a/nchan.c +++ b/nchan.c @@ -23,7 +23,7 @@ */ #include "includes.h" -RCSID("$OpenBSD: nchan.c,v 1.43 2002/01/14 13:57:03 markus Exp $"); +RCSID("$OpenBSD: nchan.c,v 1.44 2002/01/21 23:27:10 markus Exp $"); #include "ssh1.h" #include "ssh2.h" @@ -364,6 +364,9 @@ chan_rcvd_ieof(Channel *c) chan_rcvd_eof2(c); else chan_rcvd_ieof1(c); + if (c->ostate == CHAN_OUTPUT_WAIT_DRAIN && + buffer_len(&c->output) == 0) + chan_obuf_empty(c); } void chan_rcvd_oclose(Channel *c)