]> andersk Git - openssh.git/blobdiff - nchan.c
- markus@cvs.openbsd.org 2002/01/14 13:22:35
[openssh.git] / nchan.c
diff --git a/nchan.c b/nchan.c
index 04266d32629302a5f47be16f8c42fddb2bfb72eb..ff7607b9c4a427fe748b3238ef5f5cc9e34a67e8 100644 (file)
--- a/nchan.c
+++ b/nchan.c
@@ -23,7 +23,7 @@
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: nchan.c,v 1.37 2002/01/13 21:31:20 markus Exp $");
+RCSID("$OpenBSD: nchan.c,v 1.38 2002/01/14 13:22:35 markus Exp $");
 
 #include "ssh1.h"
 #include "ssh2.h"
@@ -191,10 +191,12 @@ chan_write_failed1(Channel *c)
        debug("channel %d: write failed", c->self);
        switch (c->ostate) {
        case CHAN_OUTPUT_OPEN:
+               chan_shutdown_write(c);
                chan_send_oclose1(c);
                chan_set_ostate(c, CHAN_OUTPUT_WAIT_IEOF);
                break;
        case CHAN_OUTPUT_WAIT_DRAIN:
+               chan_shutdown_write(c);
                chan_send_oclose1(c);
                chan_set_ostate(c, CHAN_OUTPUT_CLOSED);
                break;
@@ -215,6 +217,7 @@ chan_obuf_empty1(Channel *c)
        }
        switch (c->ostate) {
        case CHAN_OUTPUT_WAIT_DRAIN:
+               chan_shutdown_write(c);
                chan_send_oclose1(c);
                chan_set_ostate(c, CHAN_OUTPUT_CLOSED);
                break;
@@ -248,7 +251,6 @@ chan_send_oclose1(Channel *c)
        switch (c->ostate) {
        case CHAN_OUTPUT_OPEN:
        case CHAN_OUTPUT_WAIT_DRAIN:
-               chan_shutdown_write(c);
                buffer_clear(&c->output);
                packet_start(SSH_MSG_CHANNEL_OUTPUT_CLOSE);
                packet_put_int(c->remote_id);
This page took 0.053036 seconds and 4 git commands to generate.