static void listenproc(void*);
static void srvproc(void*);
+static void srvfree(Srv *);
static char *getremotesys(char*);
void
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;
s->rpool = nil;
s->rbuf = nil;
s->wbuf = nil;
+ s->free = srvfree;
_forker(srvproc, s, 0);
}
free(os->addr);
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);
}