diff options
Diffstat (limited to 'src/IO/IO.c')
-rw-r--r-- | src/IO/IO.c | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/src/IO/IO.c b/src/IO/IO.c index 4312fddb..3a2c0332 100644 --- a/src/IO/IO.c +++ b/src/IO/IO.c @@ -37,7 +37,7 @@ typedef struct { int Op; /* IORead | IOWrite */ int FD; /* Current File Descriptor */ int Flags; /* Flag array (look definitions above) */ - int Status; /* errno code */ + int Status; /* nonzero upon IO failure */ Dstr *Buf; /* Internal buffer */ void *Info; /* CCC Info structure for this IO */ @@ -184,9 +184,14 @@ static bool_t IO_read(IOData_t *io) ret = TRUE; break; } else { - io->Status = errno; - MSG("READ Failed: %s\n", strerror(errno)); - break; + if (conn) { + io->Status = St; + break; + } else { + io->Status = errno; + MSG("READ Failed with %d: %s\n", St, strerror(errno)); + break; + } } } else { /* St == 0 */ break; @@ -234,8 +239,14 @@ static bool_t IO_write(IOData_t *io) ret = TRUE; break; } else { - io->Status = errno; - break; + if (conn) { + io->Status = St; + break; + } else { + io->Status = errno; + MSG("WRITE Failed with %d: %s\n", St, strerror(errno)); + break; + } } } else if (St < io->Buf->len) { /* Not all data written */ |