tbug fixes - plan9port - [fork] Plan 9 from user space
 (HTM) git clone git://src.adamsgaard.dk/plan9port
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 361e279c59273dc82b1a5ced832d790a3b8b7a28
 (DIR) parent aa1d0b1bb0129243f0c4d7c6b3892d8f0556f80a
 (HTM) Author: rsc <devnull@localhost>
       Date:   Tue, 18 Jan 2005 20:15:18 +0000
       
       bug fixes
       
       Diffstat:
         M src/libventi/client.c               |       5 ++++-
         M src/libventi/parsescore.c           |       9 ++++++---
         M src/libventi/send.c                 |       8 ++++----
         M src/libventi/srvhello.c             |       4 +---
         M src/libventi/version.c              |       1 +
       
       5 files changed, 16 insertions(+), 11 deletions(-)
       ---
 (DIR) diff --git a/src/libventi/client.c b/src/libventi/client.c
       t@@ -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
 (DIR) diff --git a/src/libventi/parsescore.c b/src/libventi/parsescore.c
       t@@ -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;
        }
 (DIR) diff --git a/src/libventi/send.c b/src/libventi/send.c
       t@@ -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;
       t@@ -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);
 (DIR) diff --git a/src/libventi/srvhello.c b/src/libventi/srvhello.c
       t@@ -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);
 (DIR) diff --git a/src/libventi/version.c b/src/libventi/version.c
       t@@ -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)