if (w < 0) {
if (errno == EINTR || errno == EAGAIN || errno == EWOULDBLOCK)
return;
+ c->err = errno;
goto close;
- }
- else if (w == 0)
+ } else if (w == 0)
goto close;
else if (c->len == CHAN_BUFSZ && !(c->f & CHANF_CLOSE))
sel_addfile(&c->r);
if (r < 0) {
if (errno == EINTR || errno == EAGAIN || errno == EWOULDBLOCK)
return;
+ c->err = errno;
goto close;
- }
- else if (r == 0)
+ } else if (r == 0)
goto close;
else if (c->len == 0 && (c->f & CHANF_READY)) {
sel_addfile(&c->w);
c->base = 0;
c->len = 0;
c->f = 0;
+ c->err = 0;
sel_initfile(sel, &c->r, from, SEL_READ, readchan, c);
sel_addfile(&c->r);