From 166fca8894807de71b741a779330bd23edfec013 Mon Sep 17 00:00:00 2001 From: Damien Miller Date: Thu, 20 Apr 2000 07:42:21 +1000 Subject: - Sync with OpenBSD CVS: [clientloop.c login.c serverloop.c ssh-agent.c ssh.h sshconnect.c sshd.c] - pid_t [session.c] - remove bogus chan_read_failed. this could cause data corruption (missing data) at end of a SSH2 session. --- session.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'session.c') diff --git a/session.c b/session.c index 24bc25c6f..840a4e9e8 100644 --- a/session.c +++ b/session.c @@ -8,7 +8,7 @@ */ #include "includes.h" -RCSID("$OpenBSD: session.c,v 1.4 2000/04/14 10:30:33 markus Exp $"); +RCSID("$OpenBSD: session.c,v 1.5 2000/04/19 09:24:39 markus Exp $"); #include "xmalloc.h" #include "ssh.h" @@ -1388,8 +1388,12 @@ session_exit_message(Session *s, int status) /* disconnect channel */ debug("session_exit_message: release channel %d", s->chanid); channel_cancel_cleanup(s->chanid); - if (c->istate == CHAN_INPUT_OPEN) - chan_read_failed(c); + /* + * emulate a write failure with 'chan_write_failed', nobody will be + * interested in data we write. + * Note that we must not call 'chan_read_failed', since there could + * be some more data waiting in the pipe. + */ chan_write_failed(c); s->chanid = -1; } -- cgit v1.2.3