Easy part first: By the way, fd in _asgetticket() could be closed twice. When an error occurs, _asgetticket() close(fd), and a caller (auth/debug, factotum/p9sk1.c, ...) closes it again. As far as I can tell, everywhere that _asgetticket is called, both in the libraries and /sys/src/cmd/auth/*, a close happens after it in the error case or regardless. I'll take the close out of _asgetticket. Now the messy part: Hello, I couldn't access to an auth server from /net.alt, because factotum used only /net. Here's my fix. Replace bindnetcs(void) in factotum/util.c by the following: -- from here -- /* bind in a specified network and cs */ static int bindnetcseach(char *net, char *ipdev, char *cssrv) { int srvfd; char buf[40]; snprint(buf, sizeof buf, "%s/cs", net); if(access(buf, AEXIST) >= 0) return 0; if((srvfd = open(cssrv, ORDWR)) < 0) return -1; if(mount(srvfd, -1, net, MAFTER, "") < 0) return -1; close(srvfd); snprint(buf, sizeof buf, "%s/tcp", net); if(access(buf, AEXIST) < 0) bind(ipdev, net, MAFTER); return 0; } /* bind in the default network and cs */ static int bindnetcs(void) { if(bindnetcseach("/net", "#I", "#s/cs") < 0) return -1; bindnetcseach("/net.alt", "#I1", "#s/cs_net.alt"); return 0; } I'ld rather you just restart factotum doing the bind outside of it. The security implications of people having this done behind their back is too large. The only reason it works is because of an equally egregious hack I made a long time ago in dial that I would like to undo, i.e., that dial try /net.alt if it can't find something via /net.