diff options
| -rw-r--r-- | sys/src/lib9p/listen.c | 23 | ||||
| -rw-r--r-- | sys/src/lib9p/srv.c | 4 |
2 files changed, 19 insertions, 8 deletions
diff --git a/sys/src/lib9p/listen.c b/sys/src/lib9p/listen.c index 0ba856595..be5290a3b 100644 --- a/sys/src/lib9p/listen.c +++ b/sys/src/lib9p/listen.c @@ -15,11 +15,26 @@ _listensrv(Srv *os, char *addr) { Srv *s; - if(_forker == nil) - sysfatal("no forker"); s = emalloc9p(sizeof *s); *s = *os; + s->addr = estrdup9p(addr); + s->infd = s->outfd = s->srvfd = -1; + s->fpool = nil; + s->rpool = nil; + s->msize = 0; + s->rbuf = nil; + s->wbuf = nil; + memset(&s->rlock, 0, sizeof(s->rlock)); + memset(&s->wlock, 0, sizeof(s->wlock)); + memset(&s->slock, 0, sizeof(s->slock)); + memset(&s->sref, 0, sizeof(s->sref)); + memset(&s->rref, 0, sizeof(s->rref)); + s->spid = 0; + s->free = nil; + + if(_forker == nil) + sysfatal("no forker"); _forker(listenproc, s, 0); } @@ -56,10 +71,6 @@ listenproc(void *v) *s = *os; s->addr = getremotesys(ndir); s->infd = s->outfd = data; - s->fpool = nil; - s->rpool = nil; - s->rbuf = nil; - s->wbuf = nil; s->free = srvfree; _forker(srvproc, s, 0); } diff --git a/sys/src/lib9p/srv.c b/sys/src/lib9p/srv.c index 207c88f61..034364de0 100644 --- a/sys/src/lib9p/srv.c +++ b/sys/src/lib9p/srv.c @@ -810,8 +810,8 @@ srv(Srv *srv) fmtinstall('F', fcallfmt); srv->spid = getpid(); - srv->sref.ref = 0; - srv->rref.ref = 0; + memset(&s->sref, 0, sizeof(s->sref)); + memset(&s->rref, 0, sizeof(s->rref)); if(srv->fpool == nil) srv->fpool = allocfidpool(srv->destroyfid); |
