--- /sys/src/cmd/aux/listen.c Mon Nov 5 07:29:45 2018 +++ ../patched/gridlisten.c Wed Nov 27 14:29:01 2019 @@ -31,6 +31,7 @@ void scandir(char*, char*, char*, char*); void becomenone(void); void listendir(char*, char*, char*, int); +void doregister(char*); char listenlog[] = "listen"; @@ -215,6 +216,8 @@ else exits("ctl"); } + fprint(2, "registering %s\n", a->a); + doregister(a->a); dolisten(proto, dir, ctl, srvdir, ds, &childs); close(ctl); } @@ -346,6 +349,28 @@ close(fd); if(newns("none", namespace) < 0) error("can't build namespace"); +} + +void +doregister(char *announce) +{ + int regfd; + char *loc; + + switch(rfork(RFPROC|RFFDG)) { + case -1: + error("fork"); + case 0: + if((loc=getenv("myip")) == 0) + loc=getenv("sysname"); + regfd=open("/mnt/registry/new", OWRITE); + fprint(regfd, "tcp!%s!%s sys %s user %s", loc, announce+6, getenv("sysname"), getenv("user")); + for(;;) + sleep(1000); + break; + default: + return; + } } void