bug fixes
diff --git a/src/libventi/client.c b/src/libventi/client.c
index b06e0fb..ddee7cc 100644
--- a/src/libventi/client.c
+++ b/src/libventi/client.c
@@ -135,9 +135,12 @@
 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 2c38808..bf4a612 100644
--- a/src/libventi/parsescore.c
+++ b/src/libventi/parsescore.c
@@ -33,8 +33,11 @@
 	}
 	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 3e5f20e..bcd7850 100644
--- a/src/libventi/send.c
+++ b/src/libventi/send.c
@@ -73,10 +73,10 @@
 	/* 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 @@
 	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 029f57b..0af5a32 100644
--- a/src/libventi/srvhello.c
+++ b/src/libventi/srvhello.c
@@ -8,10 +8,8 @@
 	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 dbbc4dc..c985910 100644
--- a/src/libventi/version.c
+++ b/src/libventi/version.c
@@ -101,6 +101,7 @@
 	return 0;
 
 Err:
+	werrstr("vtversion: %r");
 	if(z->infd >= 0)
 		close(z->infd);
 	if(z->outfd >= 0 && z->outfd != z->infd)