summaryrefslogtreecommitdiff
path: root/sys/src/cmd/cwfs
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2019-10-04 18:54:01 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2019-10-04 18:54:01 +0200
commitaf23bb343a067d5346696b788f4cce5b744cd51d (patch)
treedaed08509336d61a6e1a39c4d6c96517482df226 /sys/src/cmd/cwfs
parentdea290578377f1d0a8691072557e8653f27b14a9 (diff)
cwfs: fix listen filedescriptor leaks
Diffstat (limited to 'sys/src/cmd/cwfs')
-rw-r--r--sys/src/cmd/cwfs/net.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/sys/src/cmd/cwfs/net.c b/sys/src/cmd/cwfs/net.c
index 48d22fbf1..e9f5049ca 100644
--- a/sys/src/cmd/cwfs/net.c
+++ b/sys/src/cmd/cwfs/net.c
@@ -49,26 +49,28 @@ char *annstrs[Maxnets];
static void
neti(void *v)
{
- int lisfd, accfd;
NetConnInfo *nci;
Network *net;
+ char *addr;
+ int nctl, data;
net = v;
for(;;) {
- if((lisfd = listen(net->anndir, net->lisdir)) < 0){
+ if((nctl = listen(net->anndir, net->lisdir)) < 0){
fprint(2, "%s: listen %s failed: %r\n", argv0, net->anndir);
break;
}
- /* got new call on lisfd */
- if((accfd = accept(lisfd, net->lisdir)) < 0){
- fprint(2, "%s: accept %d (from %s) failed: %r\n", argv0, lisfd, net->lisdir);
- close(lisfd);
+ if((data = accept(nctl, net->lisdir)) < 0){
+ fprint(2, "%s: accept %s failed: %r\n", argv0, net->lisdir);
+ close(nctl);
continue;
}
- nci = getnetconninfo(net->lisdir, accfd);
- if(srvchan(accfd, nci->raddr) == nil){
- fprint(2, "%s: srvchan failed for: %s\n", argv0, nci->raddr);
- close(accfd);
+ close(nctl);
+ nci = getnetconninfo(net->lisdir, data);
+ addr = nci == nil ? "unknown" : nci->raddr;
+ if(srvchan(data, addr) == nil){
+ fprint(2, "%s: srvchan failed for: %s\n", argv0, addr);
+ close(data);
}
freenetconninfo(nci);
}