diff options
author | Damien Miller <djm@mindrot.org> | 2006-01-31 21:47:15 +1100 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 2006-01-31 21:47:15 +1100 |
commit | e204f6aa0dc399dfb709f3def13b9c4f8ab35357 (patch) | |
tree | 1a0249ed6991c566531011dc3857bd70742059c8 /channels.c | |
parent | bbc59094b95aee8456918c35a8138179d34008a1 (diff) |
- 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@
Diffstat (limited to 'channels.c')
-rw-r--r-- | channels.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/channels.c b/channels.c index 5fa80fbad..1252f3446 100644 --- a/channels.c +++ b/channels.c | |||
@@ -39,7 +39,7 @@ | |||
39 | */ | 39 | */ |
40 | 40 | ||
41 | #include "includes.h" | 41 | #include "includes.h" |
42 | RCSID("$OpenBSD: channels.c,v 1.231 2005/12/30 15:56:36 reyk Exp $"); | 42 | RCSID("$OpenBSD: channels.c,v 1.232 2006/01/30 12:22:22 reyk Exp $"); |
43 | 43 | ||
44 | #include "ssh.h" | 44 | #include "ssh.h" |
45 | #include "ssh1.h" | 45 | #include "ssh1.h" |
@@ -1466,7 +1466,11 @@ channel_handle_wfd(Channel *c, fd_set * readset, fd_set * writeset) | |||
1466 | if (c->output_filter != NULL) { | 1466 | if (c->output_filter != NULL) { |
1467 | if ((buf = c->output_filter(c, &data, &dlen)) == NULL) { | 1467 | if ((buf = c->output_filter(c, &data, &dlen)) == NULL) { |
1468 | debug2("channel %d: filter stops", c->self); | 1468 | debug2("channel %d: filter stops", c->self); |
1469 | chan_read_failed(c); | 1469 | if (c->type != SSH_CHANNEL_OPEN) |
1470 | chan_mark_dead(c); | ||
1471 | else | ||
1472 | chan_write_failed(c); | ||
1473 | return -1; | ||
1470 | } | 1474 | } |
1471 | } else if (c->datagram) { | 1475 | } else if (c->datagram) { |
1472 | buf = data = buffer_get_string(&c->output, &dlen); | 1476 | buf = data = buffer_get_string(&c->output, &dlen); |