ev_fd_cancel(ev, ev_write, w->fd);
w->timeout = 0;
if(w->reader) {
+ info("found a tied reader");
/* If there is a reader still around we just untie it */
w->reader->writer = 0;
shutdown(w->fd, SHUT_WR); /* there'll be no more writes */
} else {
+ info("no tied reader");
/* There's no reader so we are free to close the FD */
xclose(w->fd);
}
ev_fd_cancel(ev, ev_read, r->fd);
r->eof = 1;
if(r->writer) {
+ info("found a tied writer");
/* If there is a writer still around we just untie it */
r->writer->reader = 0;
shutdown(r->fd, SHUT_RD); /* there'll be no more reads */
} else {
+ info("no tied writer found");
/* There's no writer so we are free to close the FD */
xclose(r->fd);
}
struct conn *c = u;
D(("server writer_error %d", errno_value));
+ info("writer_error S%x %d", c->tag, errno_value);
if(errno_value == 0) {
/* writer is done */
error(errno_value, "S%x writer completed", c->tag); /* TODO */
} else {
if(errno_value != EPIPE)
error(errno_value, "S%x write error on socket", c->tag);
+ info("cancel reader");
ev_reader_cancel(c->r);
+ info("done cancel reader");
}
ev_report(ev);
return 0;
struct conn *c = u;
D(("server reader_error %d", errno_value));
- error(errno, "S%x read error on socket", c->tag);
+ info("reader_error S%x %d", c->tag, errno_value);
+ error(errno_value, "S%x read error on socket", c->tag);
ev_writer_close(c->w);
ev_report(ev);
return 0;
if(eof) {
if(bytes)
error(0, "S%x unterminated line", c->tag);
- c->r = 0;
return ev_writer_close(c->w);
}
return 0;