commit 361e279c59273dc82b1a5ced832d790a3b8b7a28 from: rsc date: Tue Jan 18 20:15:18 2005 UTC bug fixes commit - aa1d0b1bb0129243f0c4d7c6b3892d8f0556f80a commit + 361e279c59273dc82b1a5ced832d790a3b8b7a28 blob - b06e0fbee81847389cf9cb1551cd1af5c7a7eea8 blob + ddee7cc090b62046755c50000e7f8e8de4202a6f --- src/libventi/client.c +++ 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 blob - 2c38808bfca445c4978ecee434e47d706d4e6f82 blob + bf4a6125bb172df381a8e42bae801baf5e90538f --- src/libventi/parsescore.c +++ src/libventi/parsescore.c @@ -33,8 +33,11 @@ vtparsescore(char *s, char **prefix, uchar score[VtSco } if(colon){ *colon = 0; - *prefix = s; - }else - *prefix = nil; + if(prefix) + *prefix = s; + }else{ + if(prefix) + *prefix = nil; + } return 0; } blob - 3e5f20ea561d40494990ed6b3a17e2aed79af001 blob + bcd785073a147fb062827887b93e9b38346d03a2 --- src/libventi/send.c +++ 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); blob - 029f57bfed987949907650e59a50376c3d294dba blob + 0af5a32d9b2c8ec8f82b1178cbb2d9151dcaab74 --- src/libventi/srvhello.c +++ 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); blob - dbbc4dc5b10483f0e78f6848b403e3611b4e0de8 blob + c985910f213231840e56911ae8d7b7412856815d --- src/libventi/version.c +++ 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)