From 0c148046ed2d597f9eca97e03c8a0592016c8c10 Mon Sep 17 00:00:00 2001 From: rsc Date: Wed, 16 Jun 2004 16:43:22 +0000 Subject: fix problem in cache. --- src/libventi/send.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'src/libventi/send.c') 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 -#include #include #include #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; -- cgit v1.2.3