summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/src/lib9p/listen.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/sys/src/lib9p/listen.c b/sys/src/lib9p/listen.c
index 547988472..8ba7ecb99 100644
--- a/sys/src/lib9p/listen.c
+++ b/sys/src/lib9p/listen.c
@@ -7,6 +7,7 @@
static void listenproc(void*);
static void srvproc(void*);
+static void srvend(Srv *);
static char *getremotesys(char*);
void
@@ -57,6 +58,7 @@ listenproc(void *v)
s->rpool = nil;
s->rbuf = nil;
s->wbuf = nil;
+ s->end = srvend;
_forker(srvproc, s, 0);
}
free(os->addr);
@@ -66,13 +68,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
+srvend(Srv *s)
+{
+ close(s->infd);
free(s->addr);
free(s);
}