From d7b37427a1400be6f7ac368192b915cd61d99530 Mon Sep 17 00:00:00 2001 From: djm Date: Tue, 31 Jan 2006 10:47:15 +0000 Subject: [PATCH] - reyk@cvs.openbsd.org 2006/01/30 12:22:22 [channels.c] mark channel as write failed or dead instead of read failed on error of the channel output filter. ok markus@ --- ChangeLog | 5 +++++ channels.c | 8 ++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index b275fbeb..37f2a23e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -18,6 +18,11 @@ written with a lot of help from jakob; feedback dtucker/markus; ok markus + - reyk@cvs.openbsd.org 2006/01/30 12:22:22 + [channels.c] + mark channel as write failed or dead instead of read failed on error + of the channel output filter. + ok markus@ 20060129 - (dtucker) [configure.ac opensshd.init.in] Bug #1144: Use /bin/sh for the diff --git a/channels.c b/channels.c index 5fa80fba..1252f344 100644 --- a/channels.c +++ b/channels.c @@ -39,7 +39,7 @@ */ #include "includes.h" -RCSID("$OpenBSD: channels.c,v 1.231 2005/12/30 15:56:36 reyk Exp $"); +RCSID("$OpenBSD: channels.c,v 1.232 2006/01/30 12:22:22 reyk Exp $"); #include "ssh.h" #include "ssh1.h" @@ -1466,7 +1466,11 @@ channel_handle_wfd(Channel *c, fd_set * readset, fd_set * writeset) if (c->output_filter != NULL) { if ((buf = c->output_filter(c, &data, &dlen)) == NULL) { debug2("channel %d: filter stops", c->self); - chan_read_failed(c); + if (c->type != SSH_CHANNEL_OPEN) + chan_mark_dead(c); + else + chan_write_failed(c); + return -1; } } else if (c->datagram) { buf = data = buffer_get_string(&c->output, &dlen); -- 2.45.2