updates from plan 9
diff --git a/src/lib9p/_post.c b/src/lib9p/_post.c
index e8313be..4420c2d 100644
--- a/src/lib9p/_post.c
+++ b/src/lib9p/_post.c
@@ -33,8 +33,8 @@
 	Srv *s;
 
 	s = v;
-	rfork(RFNOTEG);
 	if(!s->leavefdsopen){
+		rfork(RFNOTEG);
 		rendezvous((ulong)s, 0);
 		close(s->srvfd);
 	}
diff --git a/src/lib9p/fid.c b/src/lib9p/fid.c
index 2393f1c..e0b6af5 100644
--- a/src/lib9p/fid.c
+++ b/src/lib9p/fid.c
@@ -47,6 +47,7 @@
 	incfidref(f);
 	if(caninsertkey(pool->map, fid, f) == 0){
 		closefid(f);
+		closefid(f);
 		return nil;
 	}
 
diff --git a/src/lib9p/portdate b/src/lib9p/portdate
new file mode 100644
index 0000000..277f24d
--- /dev/null
+++ b/src/lib9p/portdate
@@ -0,0 +1,13 @@
+_post.c	2004/1225
+dirread.c	2004/1225
+fid.c		2004/1225
+file.c		2004/1225
+intmap.c	2004/1225
+mem.c	2004/1225
+req.c		2004/1225
+parse.c	2004/1225
+post.c	2004/1225
+srv.c		2004/1225
+tpost.c	2004/1225
+uid.c		2004/1225
+util.c		2004/1225
diff --git a/src/lib9p/req.c b/src/lib9p/req.c
index 8e1aaab..907db00 100644
--- a/src/lib9p/req.c
+++ b/src/lib9p/req.c
@@ -49,6 +49,7 @@
 	increqref(r);
 	if(caninsertkey(pool->map, tag, r) == 0){
 		closereq(r);
+		closereq(r);
 		return nil;
 	}