From 361e279c59273dc82b1a5ced832d790a3b8b7a28 Mon Sep 17 00:00:00 2001 From: rsc Date: Tue, 18 Jan 2005 20:15:18 +0000 Subject: bug fixes --- src/libventi/client.c | 5 ++++- src/libventi/parsescore.c | 9 ++++++--- src/libventi/send.c | 8 ++++---- src/libventi/srvhello.c | 4 +--- src/libventi/version.c | 1 + 5 files changed, 16 insertions(+), 11 deletions(-) (limited to 'src/libventi') diff --git a/src/libventi/client.c b/src/libventi/client.c index b06e0fbe..ddee7cc0 100644 --- a/src/libventi/client.c +++ b/src/libventi/client.c @@ -135,9 +135,12 @@ int vtwrite(VtConn *z, uchar score[VtScoreSize], uint type, uchar *buf, int n) { Packet *p; + int nn; p = packetforeign(buf, n, 0, nil); - return vtwritepacket(z, score, type, p); + nn = vtwritepacket(z, score, type, p); + packetfree(p); + return nn; } int diff --git a/src/libventi/parsescore.c b/src/libventi/parsescore.c index 2c38808b..bf4a6125 100644 --- a/src/libventi/parsescore.c +++ b/src/libventi/parsescore.c @@ -33,8 +33,11 @@ vtparsescore(char *s, char **prefix, uchar score[VtScoreSize]) } if(colon){ *colon = 0; - *prefix = s; - }else - *prefix = nil; + if(prefix) + *prefix = s; + }else{ + if(prefix) + *prefix = nil; + } return 0; } diff --git a/src/libventi/send.c b/src/libventi/send.c index 3e5f20ea..bcd78507 100644 --- a/src/libventi/send.c +++ b/src/libventi/send.c @@ -73,10 +73,10 @@ _vtrecv(VtConn *z) /* get enough for head size */ size = packetsize(p); while(size < 2) { - b = packettrailer(p, MaxFragSize); + b = packettrailer(p, 2); assert(b != nil); if(0) fprint(2, "%d read hdr\n", getpid()); - n = read(z->infd, b, MaxFragSize); + n = read(z->infd, b, 2); if(0) fprint(2, "%d got %d (%r)\n", getpid(), n); if(n==0 || (n<0 && !interrupted())) goto Err; @@ -90,8 +90,8 @@ _vtrecv(VtConn *z) size -= 2; while(size < len) { - // n = len - size; - // if(n > MaxFragSize) + n = len - size; + if(n > MaxFragSize) n = MaxFragSize; b = packettrailer(p, n); if(0) fprint(2, "%d read body %d\n", getpid(), n); diff --git a/src/libventi/srvhello.c b/src/libventi/srvhello.c index 029f57bf..0af5a32d 100644 --- a/src/libventi/srvhello.c +++ b/src/libventi/srvhello.c @@ -8,10 +8,8 @@ vtsrvhello(VtConn *z) VtFcall tx, rx; Packet *p; - if((p = vtrecv(z)) == nil){ - werrstr("unexpected eof on venti connection"); + if((p = vtrecv(z)) == nil) return -1; - } if(vtfcallunpack(&tx, p) < 0){ packetfree(p); diff --git a/src/libventi/version.c b/src/libventi/version.c index dbbc4dc5..c985910f 100644 --- a/src/libventi/version.c +++ b/src/libventi/version.c @@ -101,6 +101,7 @@ Okay: return 0; Err: + werrstr("vtversion: %r"); if(z->infd >= 0) close(z->infd); if(z->outfd >= 0 && z->outfd != z->infd) -- cgit v1.2.3