version 1.25, 2001/05/16 22:09:21 |
version 1.26, 2001/05/28 23:14:49 |
|
|
void |
void |
chan_mark_dead(Channel *c) |
chan_mark_dead(Channel *c) |
{ |
{ |
c->flags |= CHAN_DEAD; |
c->type = SSH_CHANNEL_ZOMBIE; |
} |
} |
|
|
int |
int |
chan_is_dead(Channel *c) |
chan_is_dead(Channel *c) |
{ |
{ |
if (c->flags & CHAN_DEAD) |
if (c->type == SSH_CHANNEL_ZOMBIE) { |
|
debug("channel %d: zombie", c->self); |
return 1; |
return 1; |
|
} |
if (c->istate != CHAN_INPUT_CLOSED || c->ostate != CHAN_OUTPUT_CLOSED) |
if (c->istate != CHAN_INPUT_CLOSED || c->ostate != CHAN_OUTPUT_CLOSED) |
return 0; |
return 0; |
if (!compat20) { |
if (!compat20) { |
|
|
if (close(c->wfd) < 0) |
if (close(c->wfd) < 0) |
log("channel %d: chan_shutdown_write: close() failed for fd%d: %.100s", |
log("channel %d: chan_shutdown_write: close() failed for fd%d: %.100s", |
c->self, c->wfd, strerror(errno)); |
c->self, c->wfd, strerror(errno)); |
|
c->wfd = -1; |
} |
} |
} |
} |
static void |
static void |
|
|
if (close(c->rfd) < 0) |
if (close(c->rfd) < 0) |
log("channel %d: chan_shutdown_read: close() failed for fd%d: %.100s", |
log("channel %d: chan_shutdown_read: close() failed for fd%d: %.100s", |
c->self, c->rfd, strerror(errno)); |
c->self, c->rfd, strerror(errno)); |
|
c->rfd = -1; |
} |
} |
} |
} |