]> git.lizzy.rs Git - plan9front.git/blobdiff - sys/src/lib9p/listen.c
pc: replace duplicated and broken mmu flush code in vunmap()
[plan9front.git] / sys / src / lib9p / listen.c
old mode 100755 (executable)
new mode 100644 (file)
index 5479884..0ba8565
@@ -7,6 +7,7 @@
 
 static void listenproc(void*);
 static void srvproc(void*);
+static void srvfree(Srv *);
 static char *getremotesys(char*);
 
 void
@@ -43,11 +44,13 @@ listenproc(void *v)
                        break;
                }
                
-               data = accept(ctl, ndir);
+               data = accept(nctl, ndir);
                if(data < 0){
                        fprint(2, "%s: accept %s: %r\n", argv0, ndir);
+                       close(nctl);
                        continue;
                }
+               close(nctl);
 
                s = emalloc9p(sizeof *s);
                *s = *os;
@@ -57,6 +60,7 @@ listenproc(void *v)
                s->rpool = nil;
                s->rbuf = nil;
                s->wbuf = nil;
+               s->free = srvfree;
                _forker(srvproc, s, 0);
        }
        free(os->addr);
@@ -66,13 +70,13 @@ listenproc(void *v)
 static void
 srvproc(void *v)
 {
-       int data;
-       Srv *s;
-       
-       s = v;
-       data = s->infd;
-       srv(s);
-       close(data);
+       srv((Srv*)v);
+}
+
+static void
+srvfree(Srv *s)
+{
+       close(s->infd);
        free(s->addr);
        free(s);
 }