diff --git a/sys/src/cmd/vac/file.c b/sys/src/cmd/vac/file.c
index cc88eabd2..119e07cde 100644
--- a/sys/src/cmd/vac/file.c
+++ b/sys/src/cmd/vac/file.c
@@ -1592,6 +1592,11 @@ vacfilesetdir(VacFile *f, VacDir *dir)
f->dir.gid = vtstrdup(dir->gid);
}
+ if(strcmp(f->dir.mid, dir->mid) != 0){
+ vtfree(f->dir.mid);
+ f->dir.mid = vtstrdup(dir->mid);
+ }
+
f->dir.mtime = dir->mtime;
f->dir.atime = dir->atime;
@@ -1774,7 +1779,7 @@ vacfsopen(VtConn *z, char *file, int mode, int ncache)
char *prefix;
if(vtparsescore(file, &prefix, score) >= 0){
- if(strcmp(prefix, "vac") != 0){
+ if(prefix == nil || strcmp(prefix, "vac") != 0){
werrstr("not a vac file");
return nil;
}
diff --git a/sys/src/cmd/vac/vacfs.c b/sys/src/cmd/vac/vacfs.c
index e4697c92a..164bf8060 100644
--- a/sys/src/cmd/vac/vacfs.c
+++ b/sys/src/cmd/vac/vacfs.c
@@ -200,12 +200,6 @@ threadmain(int argc, char *argv[])
mfd[0] = p[0];
mfd[1] = p[0];
srvfd = p[1];
- }
-
- procrfork(srv, 0, Stacksize, RFFDG|RFNAMEG|RFNOTEG);
-
- if(!stdio){
- close(p[0]);
if(defsrv){
srvname = smprint("/srv/%s", defsrv);
fd = create(srvname, OWRITE|ORCLOSE, 0666);
@@ -215,6 +209,12 @@ threadmain(int argc, char *argv[])
sysfatal("write %s: %r", srvname);
free(srvname);
}
+ }
+
+ procrfork(srv, 0, Stacksize, RFFDG|RFNAMEG|RFNOTEG);
+
+ if(!stdio){
+ close(p[0]);
if(defmnt){
if(mount(srvfd, -1, defmnt, MREPL|MCREATE, "") < 0)
sysfatal("mount %s: %r", defmnt);
diff --git a/sys/src/libventi/server.c b/sys/src/libventi/server.c
index 10b0665fd..d24ea1f93 100644
--- a/sys/src/libventi/server.c
+++ b/sys/src/libventi/server.c
@@ -180,7 +180,9 @@ vtgetreq(VtSrv *srv)
VtReq *r;
r = _vtqrecv(srv->q);
- vtlog(VtServerLog, "%T %s: vtgetreq %F
\n", ((VtSconn*)r->sc)->c->addr, &r->tx);
+ if (r != nil)
+ vtlog(VtServerLog, "%T %s: vtgetreq %F
\n",
+ ((VtSconn*)r->sc)->c->addr, &r->tx);
return r;
}