X-Git-Url: https://git.distorted.org.uk/~mdw/fwd/blobdiff_plain/270b8403580b7fd0feae995b9e8bad4a2ff660ff..68263f4f5ac7eba4b364b4756c0b316831fda4e3:/chan.c diff --git a/chan.c b/chan.c index e5b6d06..9aa42a5 100644 --- a/chan.c +++ b/chan.c @@ -80,9 +80,9 @@ static void writechan(int fd, unsigned mode, void *vp) 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); @@ -153,9 +153,9 @@ static void readchan(int fd, unsigned mode, void *vp) 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); @@ -240,6 +240,7 @@ void chan_open(chan *c, int from, int to, 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);