chiark
/
gitweb
/
~mdw
/
fwd
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Various: Report errors encountered while doing channel I/O.
[fwd]
/
chan.c
diff --git
a/chan.c
b/chan.c
index e5b6d06ab5771244df203ce1131a70241ce1d37a..5fbecb1605e4d3eef8e89bd34ce936b2c18402fb 100644
(file)
--- 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;
if (w < 0) {
if (errno == EINTR || errno == EAGAIN || errno == EWOULDBLOCK)
return;
+ c->err = errno;
goto close;
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);
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;
if (r < 0) {
if (errno == EINTR || errno == EAGAIN || errno == EWOULDBLOCK)
return;
+ c->err = errno;
goto close;
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);
goto close;
else if (c->len == 0 && (c->f & CHANF_READY)) {
sel_addfile(&c->w);