version 1.11, 2000/03/28 20:31:27 |
version 1.12, 2000/03/28 20:34:14 |
|
|
error("protocol error: chan_rcvd_oclose %d for istate %d", c->self, c->istate); |
error("protocol error: chan_rcvd_oclose %d for istate %d", c->self, c->istate); |
return; |
return; |
} |
} |
chan_delete_if_full_closed(c); |
|
} |
} |
void |
void |
chan_read_failed(Channel *c) |
chan_read_failed(Channel *c) |
|
|
case CHAN_OUTPUT_WAIT_IEOF: |
case CHAN_OUTPUT_WAIT_IEOF: |
debug("channel %d: OUTPUT_WAIT_IEOF -> OUTPUT_CLOSED [rvcd IEOF]", c->self); |
debug("channel %d: OUTPUT_WAIT_IEOF -> OUTPUT_CLOSED [rvcd IEOF]", c->self); |
c->ostate = CHAN_OUTPUT_CLOSED; |
c->ostate = CHAN_OUTPUT_CLOSED; |
chan_delete_if_full_closed(c); |
|
break; |
break; |
default: |
default: |
error("protocol error: chan_rcvd_ieof %d for ostate %d", c->self, c->ostate); |
error("protocol error: chan_rcvd_ieof %d for ostate %d", c->self, c->ostate); |
|
|
debug("channel %d: OUTPUT_WAIT_DRAIN -> OUTPUT_CLOSED [write failed]", c->self); |
debug("channel %d: OUTPUT_WAIT_DRAIN -> OUTPUT_CLOSED [write failed]", c->self); |
chan_send_oclose(c); |
chan_send_oclose(c); |
c->ostate = CHAN_OUTPUT_CLOSED; |
c->ostate = CHAN_OUTPUT_CLOSED; |
chan_delete_if_full_closed(c); |
|
break; |
break; |
default: |
default: |
error("internal error: chan_write_failed %d for ostate %d", c->self, c->ostate); |
error("internal error: chan_write_failed %d for ostate %d", c->self, c->ostate); |
|
|
debug("channel %d: OUTPUT_WAIT_DRAIN -> OUTPUT_CLOSED [obuf empty, send OCLOSE]", c->self); |
debug("channel %d: OUTPUT_WAIT_DRAIN -> OUTPUT_CLOSED [obuf empty, send OCLOSE]", c->self); |
chan_send_oclose(c); |
chan_send_oclose(c); |
c->ostate = CHAN_OUTPUT_CLOSED; |
c->ostate = CHAN_OUTPUT_CLOSED; |
chan_delete_if_full_closed(c); |
|
break; |
break; |
default: |
default: |
error("internal error: chan_obuf_empty %d for ostate %d", c->self, c->ostate); |
error("internal error: chan_obuf_empty %d for ostate %d", c->self, c->ostate); |