use nci to label connections
diff --git a/src/libventi/conn.c b/src/libventi/conn.c
index 3f41979..990e7db 100644
--- a/src/libventi/conn.c
+++ b/src/libventi/conn.c
@@ -9,6 +9,7 @@
 vtconn(int infd, int outfd)
 {
 	VtConn *z;
+	NetConnInfo *nci;
 
 	z = vtmallocz(sizeof(VtConn));
 	z->tagrend.l = &z->lk;
@@ -16,6 +17,13 @@
 	z->infd = infd;
 	z->outfd = outfd;
 	z->part = packetalloc();
+	nci = getnetconninfo(nil, infd);
+	if(nci == nil)
+		snprint(z->addr, sizeof z->addr, "/dev/fd/%d", infd);
+	else{
+		strecpy(z->addr, z->addr+sizeof z->addr, nci->raddr);
+		freenetconninfo(nci);
+	}
 	return z;
 }
 
diff --git a/src/libventi/dial.c b/src/libventi/dial.c
index b8234b3..060b93f 100644
--- a/src/libventi/dial.c
+++ b/src/libventi/dial.c
@@ -7,6 +7,7 @@
 {
 	char *na;
 	int fd;
+	VtConn *z;
 
 	if(addr == nil)
 		addr = getenv("venti");
@@ -17,5 +18,8 @@
 	if((fd = dial(na, nil, nil, nil)) < 0)
 		return nil;
 
-	return vtconn(fd, fd);
+	z = vtconn(fd, fd);
+	if(z)
+		strecpy(z->addr, z->addr+sizeof z->addr, na);
+	return z;
 }
diff --git a/src/libventi/send.c b/src/libventi/send.c
index bcd7850..642d4de 100644
--- a/src/libventi/send.c
+++ b/src/libventi/send.c
@@ -37,11 +37,13 @@
 		if(n == 0)
 			break;
 		if(write(z->outfd, ioc.addr, ioc.len) < ioc.len){
+			vtlog(VtServerLog, "%s: sending packet %p: %r", z->addr, p);
 			packetfree(p);
 			return 0;
 		}
 		packetconsume(p, nil, ioc.len);
 	}
+	vtlog(VtServerLog, "%s: sent packet %p", z->addr, p);
 	packetfree(p);
 	return 1;
 }
@@ -106,8 +108,10 @@
 	ventirecvbytes += len;
 	ventirecvpackets++;
 	p = packetsplit(p, len);
+	vtlog(VtServerLog, "%s: read packet %p len %d", z->addr, p, len);
 	return p;
 Err:	
+	vtlog(VtServerLog, "%s: error reading packet: %r", z->addr);
 	return nil;	
 }
 
diff --git a/src/libventi/server.c b/src/libventi/server.c
index 391d737..ae64b32 100644
--- a/src/libventi/server.c
+++ b/src/libventi/server.c
@@ -31,6 +31,8 @@
 static void listenproc(void*);
 static void connproc(void*);
 
+char *VtServerLog = "libventi/server";
+
 static void
 scincref(VtSconn *sc)
 {
@@ -140,10 +142,12 @@
 	while((p = vtrecv(c)) != nil){
 		r = vtmallocz(sizeof(VtReq));
 		if(vtfcallunpack(&r->tx, p) < 0){
-			packetfree(p);
+			vtlog(VtServerLog, "%s: recv bad packet %p: %r", c->addr, p);
 			fprint(2, "bad packet on %s: %r\n", sc->dir);
+			packetfree(p);
 			continue;
 		}
+		vtlog(VtServerLog, "%s: recv packet %p (%F)", c->addr, p, &r->tx);
 		if(chattyventi)
 			fprint(2, "%s <- %F\n", argv0, &r->tx);
 		packetfree(p);
@@ -175,7 +179,11 @@
 VtReq*
 vtgetreq(VtSrv *srv)
 {
-	return _vtqrecv(srv->q);
+	VtReq *r;
+	
+	r = _vtqrecv(srv->q);
+	vtlog(VtServerLog, "%s: vtgetreq %F\n", ((VtSconn*)r->sc)->c->addr, &r->tx);
+	return r;
 }
 
 void
@@ -192,11 +200,13 @@
 	if(chattyventi)
 		fprint(2, "%s -> %F\n", argv0, &r->rx);
 	if((p = vtfcallpack(&r->rx)) == nil){
+		vtlog(VtServerLog, "%s: vtfcallpack %F: %r", sc->c->addr, &r->rx);
 		fprint(2, "fcallpack on %s: %r\n", sc->dir);
 		packetfree(p);
 		vtfcallclear(&r->rx);
 		return;
 	}
+	vtlog(VtServerLog, "%s: send packet %p (%F)", sc->c->addr, p, &r->rx);
 	if(vtsend(sc->c, p) < 0)
 		fprint(2, "vtsend %F: %r\n", &r->rx);
 	scdecref(sc);