tvarious debugging - 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 a09e80f9c414ffc815641d49836be3a2a6a07800
 (DIR) parent 7e0e6522e576bc35b55a7182c23fb752cc1ec636
 (HTM) Author: rsc <devnull@localhost>
       Date:   Sun, 23 May 2004 00:59:17 +0000
       
       various debugging
       
       Diffstat:
         M include/venti.h                     |       3 +++
         M src/libventi/client.c               |      29 ++++++++++++++++++++---------
         M src/libventi/conn.c                 |       2 ++
         M src/libventi/packet.c               |       8 ++++++--
         M src/libventi/rpc.c                  |       3 +++
         M src/libventi/send.c                 |      15 +++++++++++----
         M src/libventi/server.c               |       9 +++++++++
       
       7 files changed, 54 insertions(+), 15 deletions(-)
       ---
 (DIR) diff --git a/include/venti.h b/include/venti.h
       t@@ -446,6 +446,9 @@ uvlong vtfilegetsize(VtFile*);
        int vtfilesetsize(VtFile*, uvlong);
        int vtfileremove(VtFile*);
        
       +extern int chattyventi;
       +extern int ventidoublechecksha1;
       +
        #if defined(__cplusplus)
        }
        #endif
 (DIR) diff --git a/src/libventi/client.c b/src/libventi/client.c
       t@@ -2,11 +2,15 @@
        #include <libc.h>
        #include <venti.h>
        
       +int ventidoublechecksha1 = 1;
       +
        static int
        vtfcallrpc(VtConn *z, VtFcall *ou, VtFcall *in)
        {
                Packet *p;
        
       +        if(chattyventi)
       +                fprint(2, "%s -> %F\n", argv0, ou);
                p = vtfcallpack(ou);
                if(p == nil)
                        return -1;
       t@@ -16,6 +20,8 @@ vtfcallrpc(VtConn *z, VtFcall *ou, VtFcall *in)
                        packetfree(p);
                        return -1;
                }
       +        if(chattyventi)
       +                fprint(2, "%s <- %F\n", argv0, in);
                if(in->type == VtRerror){
                        werrstr(in->error);
                        vtfcallclear(in);
       t@@ -70,11 +76,13 @@ vtreadpacket(VtConn *z, uchar score[VtScoreSize], uint type, int n)
                        packetfree(rx.data);
                        return nil;
                }
       -        packetsha1(rx.data, tx.score);
       -        if(memcmp(score, tx.score, VtScoreSize) != 0){
       -                werrstr("read asked for %V got %V", score, tx.score);
       -                packetfree(rx.data);
       -                return nil;
       +        if(ventidoublechecksha1){
       +                packetsha1(rx.data, tx.score);
       +                if(memcmp(score, tx.score, VtScoreSize) != 0){
       +                        werrstr("read asked for %V got %V", score, tx.score);
       +                        packetfree(rx.data);
       +                        return nil;
       +                }
                }
        
                return rx.data;
       t@@ -102,12 +110,15 @@ vtwritepacket(VtConn *z, uchar score[VtScoreSize], uint type, Packet *p)
                tx.type = VtTwrite;
                tx.dtype = type;
                tx.data = p;
       -        packetsha1(p, score);
       +        if(ventidoublechecksha1)
       +                packetsha1(p, score);
                if(vtfcallrpc(z, &tx, &rx) < 0)
                        return -1;
       -        if(memcmp(score, rx.score, VtScoreSize) != 0){
       -                werrstr("sha1 hash mismatch: want %V got %V", score, rx.score);
       -                return -1;
       +        if(ventidoublechecksha1){
       +                if(memcmp(score, rx.score, VtScoreSize) != 0){
       +                        werrstr("sha1 hash mismatch: want %V got %V", score, rx.score);
       +                        return -1;
       +                }
                }
                return 0;
        }
 (DIR) diff --git a/src/libventi/conn.c b/src/libventi/conn.c
       t@@ -3,6 +3,8 @@
        #include <venti.h>
        #include "queue.h"
        
       +int chattyventi;
       +
        VtConn*
        vtconn(int infd, int outfd)
        {
 (DIR) diff --git a/src/libventi/packet.c b/src/libventi/packet.c
       t@@ -113,7 +113,7 @@ packetalloc(void)
                p->last = nil;
                p->next = nil;
        
       -if(0)fprint(2, "packetalloc %p from %08lux %08lux %08lux\n", p, *((uint*)&p+2), *((uint*)&p+3), *((uint*)&p+4));
       +//if(0)fprint(2, "packetalloc %p from %08lux %08lux %08lux\n", p, *((uint*)&p+2), *((uint*)&p+3), *((uint*)&p+4));
        
                return p;
        }
       t@@ -196,6 +196,7 @@ packetsplit(Packet *p, int n)
                Packet *pp;
                Frag *f, *ff;
        
       +        if(0) fprint(2, "packetsplit %p %d\n", p, n);
                NOTFREE(p);
                if(n < 0 || n > p->size) {
                        werrstr(EPacketSize);
       t@@ -235,6 +236,7 @@ packetsplit(Packet *p, int n)
        int
        packetconsume(Packet *p, uchar *buf, int n)
        {
       +        if(0) fprint(2, "packetconsume %p %d\n", p, n);
                NOTFREE(p);
                if(buf && packetcopy(p, buf, 0, n) < 0)
                        return -1;
       t@@ -246,6 +248,7 @@ packettrim(Packet *p, int offset, int n)
        {
                Frag *f, *ff;
        
       +        if(0) fprint(2, "packettrim %p %d %d\n", p, offset, n);
                NOTFREE(p);
                if(offset < 0 || offset > p->size) {
                        werrstr(EPacketOffset);
       t@@ -341,6 +344,7 @@ packettrailer(Packet *p, int n)
                Mem *m;
                Frag *f;
        
       +        if(0) fprint(2, "packettrailer %p %d\n", p, n);
                NOTFREE(p);
                if(n <= 0 || n > MaxFragSize) {
                        werrstr(EPacketSize);
       t@@ -603,7 +607,7 @@ uint
        packetsize(Packet *p)
        {
                NOTFREE(p);
       -        if(0) {
       +        if(1) {
                        Frag *f;
                        int size = 0;
                
 (DIR) diff --git a/src/libventi/rpc.c b/src/libventi/rpc.c
       t@@ -3,6 +3,9 @@
         * could turn this into a generic library routine rather
         * than keep it Venti specific.  A user-level 9P client
         * could use something like this too.
       + * 
       + * (Actually it does - this should be replaced with libmux,
       + * which should be renamed librpcmux.)
         *
         * This is a little more complicated than it might be
         * because we want it to work well within and without libthread.
 (DIR) diff --git a/src/libventi/send.c b/src/libventi/send.c
       t@@ -59,7 +59,9 @@ _vtrecv(VtConn *z)
                while(size < 2) {
                        b = packettrailer(p, MaxFragSize);
                        assert(b != nil);
       +                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)
                                goto Err;
                        size += n;
       t@@ -72,13 +74,18 @@ _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(readn(z->infd, b, n) != n)
       +                if(0) fprint(2, "%d read body %d\n", getpid(), n);
       +                n = read(z->infd, b, n);
       +                if(0) fprint(2, "%d got %d (%r)\n", getpid(), n);
       +                if(n > 0)
       +                        size += n;
       +                packettrim(p, 0, size);
       +                if(n <= 0)
                                goto Err;
       -                size += n;
                }
                p = packetsplit(p, len);
                return p;
 (DIR) diff --git a/src/libventi/server.c b/src/libventi/server.c
       t@@ -102,7 +102,12 @@ connproc(void *v)
                Packet *p;
                VtReq *r;
                int fd;
       +static int first=1;
        
       +if(first){
       +        first=0;
       +        fmtinstall('F', vtfcallfmt);
       +}
                r = nil;
                sc = v;
                sc->c = nil;
       t@@ -139,6 +144,8 @@ connproc(void *v)
                                fprint(2, "bad packet on %s: %r\n", sc->dir);
                                continue;
                        }
       +                if(chattyventi)
       +                        fprint(2, "%s <- %F\n", argv0, &r->tx);
                        packetfree(p);
                        if(r->tx.type == VtTgoodbye)
                                break;
       t@@ -182,6 +189,8 @@ vtrespond(VtReq *r)
                        abort();
                if(r->rx.type != r->tx.type+1 && r->rx.type != VtRerror)
                        abort();
       +        if(chattyventi)
       +                fprint(2, "%s -> %F\n", argv0, &r->rx);
                if((p = vtfcallpack(&r->rx)) == nil){
                        fprint(2, "fcallpack on %s: %r\n", sc->dir);
                        packetfree(p);