diff options
| author | rsc <devnull@localhost> | 2004-06-16 16:43:22 +0000 |
|---|---|---|
| committer | rsc <devnull@localhost> | 2004-06-16 16:43:22 +0000 |
| commit | 0c148046ed2d597f9eca97e03c8a0592016c8c10 (patch) | |
| tree | 2a37fa281a8ac86d5a7cdd54f5964f90e20d6cf0 /src/libventi/send.c | |
| parent | 39ef727f465306bad804814e58ee0a94224c9fec (diff) | |
| download | plan9port-0c148046ed2d597f9eca97e03c8a0592016c8c10.tar.gz plan9port-0c148046ed2d597f9eca97e03c8a0592016c8c10.zip | |
fix problem in cache.
Diffstat (limited to 'src/libventi/send.c')
| -rw-r--r-- | src/libventi/send.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/libventi/send.c b/src/libventi/send.c index 726c4027..3e5f20ea 100644 --- a/src/libventi/send.c +++ b/src/libventi/send.c @@ -1,5 +1,4 @@ #include <u.h> -#include <errno.h> #include <libc.h> #include <venti.h> #include "queue.h" @@ -47,6 +46,16 @@ _vtsend(VtConn *z, Packet *p) return 1; } +static int +interrupted(void) +{ + char e[ERRMAX]; + + rerrstr(e, sizeof e); + return strstr(e, "interrupted") != nil; +} + + static Packet* _vtrecv(VtConn *z) { @@ -69,7 +78,7 @@ _vtrecv(VtConn *z) if(0) fprint(2, "%d read hdr\n", getpid()); n = read(z->infd, b, MaxFragSize); if(0) fprint(2, "%d got %d (%r)\n", getpid(), n); - if(n==0 || (n<0 && errno!=EINTR)) + if(n==0 || (n<0 && !interrupted())) goto Err; size += n; packettrim(p, 0, size); @@ -91,7 +100,7 @@ _vtrecv(VtConn *z) if(n > 0) size += n; packettrim(p, 0, size); - if(n==0 || (n<0 && errno!=EINTR)) + if(n==0 || (n<0 && !interrupted())) goto Err; } ventirecvbytes += len; |
