summaryrefslogtreecommitdiff
path: root/nchan.c
diff options
context:
space:
mode:
authorBen Lindstrom <mouring@eviladmin.org>2001-06-05 20:52:50 +0000
committerBen Lindstrom <mouring@eviladmin.org>2001-06-05 20:52:50 +0000
commitc0dee1a1485aae5d4b62ee7742cea5f752392361 (patch)
treed82ba1416594aa8ebdc6fe1ced77694f0d19366a /nchan.c
parenta3828d48121544bb84a61c0a9c3260c6537f6d84 (diff)
- markus@cvs.openbsd.org 2001/05/28 23:14:49
[channels.c channels.h nchan.c] undo broken channel fix and try a different one. there should be still some select errors...
Diffstat (limited to 'nchan.c')
-rw-r--r--nchan.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/nchan.c b/nchan.c
index 38d860bab..957c45618 100644
--- a/nchan.c
+++ b/nchan.c
@@ -23,7 +23,7 @@
23 */ 23 */
24 24
25#include "includes.h" 25#include "includes.h"
26RCSID("$OpenBSD: nchan.c,v 1.25 2001/05/16 22:09:21 markus Exp $"); 26RCSID("$OpenBSD: nchan.c,v 1.26 2001/05/28 23:14:49 markus Exp $");
27 27
28#include "ssh1.h" 28#include "ssh1.h"
29#include "ssh2.h" 29#include "ssh2.h"
@@ -394,14 +394,16 @@ chan_send_close2(Channel *c)
394void 394void
395chan_mark_dead(Channel *c) 395chan_mark_dead(Channel *c)
396{ 396{
397 c->flags |= CHAN_DEAD; 397 c->type = SSH_CHANNEL_ZOMBIE;
398} 398}
399 399
400int 400int
401chan_is_dead(Channel *c) 401chan_is_dead(Channel *c)
402{ 402{
403 if (c->flags & CHAN_DEAD) 403 if (c->type == SSH_CHANNEL_ZOMBIE) {
404 debug("channel %d: zombie", c->self);
404 return 1; 405 return 1;
406 }
405 if (c->istate != CHAN_INPUT_CLOSED || c->ostate != CHAN_OUTPUT_CLOSED) 407 if (c->istate != CHAN_INPUT_CLOSED || c->ostate != CHAN_OUTPUT_CLOSED)
406 return 0; 408 return 0;
407 if (!compat20) { 409 if (!compat20) {
@@ -484,6 +486,7 @@ chan_shutdown_write(Channel *c)
484 if (close(c->wfd) < 0) 486 if (close(c->wfd) < 0)
485 log("channel %d: chan_shutdown_write: close() failed for fd%d: %.100s", 487 log("channel %d: chan_shutdown_write: close() failed for fd%d: %.100s",
486 c->self, c->wfd, strerror(errno)); 488 c->self, c->wfd, strerror(errno));
489 c->wfd = -1;
487 } 490 }
488} 491}
489static void 492static void
@@ -506,5 +509,6 @@ chan_shutdown_read(Channel *c)
506 if (close(c->rfd) < 0) 509 if (close(c->rfd) < 0)
507 log("channel %d: chan_shutdown_read: close() failed for fd%d: %.100s", 510 log("channel %d: chan_shutdown_read: close() failed for fd%d: %.100s",
508 c->self, c->rfd, strerror(errno)); 511 c->self, c->rfd, strerror(errno));
512 c->rfd = -1;
509 } 513 }
510} 514}