commit - 40a2ff6f5d6291046a2bdeaa64de403a885a3a35
commit + 387ae1dbb89dba0fc03ba5210b90bbde70a8cb86
blob - 5f509f24f722f78d991f6e57b3cc20aacae8338b
blob + 17cde8592459dd1487dab4cd8130ba46a8adff28
--- src/cmd/ndb/dns.c
+++ src/cmd/ndb/dns.c
srand(now*getpid());
db2cache(1);
- if(serve)
- proccreate(dnudpserver, mntpt, STACK);
+// if(serve)
+// proccreate(dnudpserver, mntpt, STACK);
if(sendnotifies)
notifyproc();
return mf;
}
}
+ if(!needunused){
+ unlock(&mfalloc.lk);
+ return nil;
+ }
mf = emalloc(sizeof(*mf));
if(mf == nil)
sysfatal("out of memory");
{
Mfile **l;
+fprint(2, "freefid %d\n", mf->fid);
lock(&mfalloc.lk);
for(l = &mfalloc.inuse; *l != nil; l = &(*l)->next){
if(*l == mf){
freejob(job);
continue;
}
- mf = newfid(job->request.fid, 0);
if(debug)
syslog(0, logfile, "%F", &job->request);
getactivity(&req);
req.aborttime = now + 60; /* don't spend more than 60 seconds */
+
+ mf = nil;
+ switch(job->request.type){
+ case Tversion:
+ case Tauth:
+ case Tflush:
+ break;
+ case Tattach:
+ mf = newfid(job->request.fid, 1);
+ if(mf == nil){
+ sendmsg(job, "fid in use");
+ goto skip;
+ }
+ break;
+ default:
+ mf = newfid(job->request.fid, 0);
+ if(mf == nil){
+ sendmsg(job, "unknown fid");
+ goto skip;
+ }
+ break;
+ }
switch(job->request.type){
default:
rwstat(job, mf);
break;
}
-
+skip:
freejob(job);
/*
blob - bfaaa68d08dc7a7238ad6db1a2ee574adc938e4f
blob + 0987f26497b6dd1940b591120bf65f0165da5789
--- src/cmd/ndb/dns.h
+++ src/cmd/ndb/dns.h
/* dnserver.c */
extern void dnserver(DNSmsg*, DNSmsg*, Request*);
-extern void dnudpserver(void*);
extern void dntcpserver(char*);
/* dnnotify.c */