summaryrefslogtreecommitdiff
path: root/sys/src/cmd/ndb
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2016-02-22 22:44:01 +0100
committercinap_lenrek <cinap_lenrek@felloff.net>2016-02-22 22:44:01 +0100
commitb31cc134e7cca59b8dd67bb30271b80f554e0da0 (patch)
tree727a4f045d2ea1b4842e13b1a693eb99b9e40ac3 /sys/src/cmd/ndb
parent258fe87faf0a64947bb91c8ed93f8ea378a36f83 (diff)
ndb/dns: initialize unknown fids to point to the root qid
the dns file service can be restarted, which causes it to forget all fid state. given the simple file system structure of the dns service (just a single dns file), we can assume that rpcs on a unknown fid refers to the root, so the mountpoint will stay valid and /net/dns can be reopend avoiding the need for a remount of the dns service after restart.
Diffstat (limited to 'sys/src/cmd/ndb')
-rw-r--r--sys/src/cmd/ndb/dns.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/src/cmd/ndb/dns.c b/sys/src/cmd/ndb/dns.c
index 65befe7ae..3b163ca72 100644
--- a/sys/src/cmd/ndb/dns.c
+++ b/sys/src/cmd/ndb/dns.c
@@ -320,7 +320,10 @@ newfid(int fid, int needunused)
}
mf = emalloc(sizeof(*mf));
mf->fid = fid;
- mf->user = estrdup("dummy");
+ mf->qid.vers = vers;
+ mf->qid.type = QTDIR;
+ mf->qid.path = 0LL;
+ mf->user = estrdup("none");
mf->next = mfalloc.inuse;
mfalloc.inuse = mf;
unlock(&mfalloc);
@@ -355,7 +358,7 @@ copyfid(Mfile *mf, int fid)
if(nmf == nil)
return nil;
nmf->fid = fid;
- free(nmf->user); /* estrdup("dummy") */
+ free(nmf->user); /* estrdup("none") */
nmf->user = estrdup(mf->user);
nmf->qid.type = mf->qid.type;
nmf->qid.path = mf->qid.path;