- return 0;
-}
-
-void
-chan_init_iostates(Channel *c)
-{
- c->ostate = CHAN_OUTPUT_OPEN;
- c->istate = CHAN_INPUT_OPEN;
- c->flags = 0;
-}
-
-/* init */
-void
-chan_init(void)
-{
- if (compat20) {
- chan_rcvd_oclose = chan_rcvd_oclose2;
- chan_read_failed = chan_read_failed_12;
- chan_ibuf_empty = chan_ibuf_empty2;
-
- chan_rcvd_ieof = chan_rcvd_ieof2;
- chan_write_failed = chan_write_failed2;
- chan_obuf_empty = chan_obuf_empty2;
- } else {
- chan_rcvd_oclose = chan_rcvd_oclose1;
- chan_read_failed = chan_read_failed_12;
- chan_ibuf_empty = chan_ibuf_empty1;
-
- chan_rcvd_ieof = chan_rcvd_ieof1;
- chan_write_failed = chan_write_failed1;
- chan_obuf_empty = chan_obuf_empty1;
+ if ((c->flags & CHAN_CLOSE_SENT) &&
+ (c->flags & CHAN_CLOSE_RCVD)) {
+ debug2("channel %d: is dead", c->self);
+ return 1;