From f466d3894c7c83f2dbde773c5b886a18b57d799e Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Wed, 8 Aug 2012 19:03:10 +0200 Subject: [PATCH] ndb/dns: cleanup --- sys/src/cmd/ndb/dns.c | 25 ++++++++++++------------- sys/src/cmd/ndb/dnudpserver.c | 8 ++++++-- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/sys/src/cmd/ndb/dns.c b/sys/src/cmd/ndb/dns.c index e4244e5f8..c0e814b95 100644 --- a/sys/src/cmd/ndb/dns.c +++ b/sys/src/cmd/ndb/dns.c @@ -274,7 +274,17 @@ mountinit(char *service, char *mntpt) char buf[32]; if(pipe(p) < 0) - abort(); /* "pipe failed" */; + sysfatal("pipe failed: %r"); + + /* + * make a /srv/dns + */ + if((f = create(service, OWRITE|ORCLOSE, 0666)) < 0) + sysfatal("create %s failed: %r", service); + snprint(buf, sizeof buf, "%d", p[1]); + if(write(f, buf, strlen(buf)) != strlen(buf)) + sysfatal("write %s failed: %r", service); + /* copy namespace to avoid a deadlock */ switch(rfork(RFFDG|RFPROC|RFNAMEG)){ case 0: /* child: hang around and (re)start main proc */ @@ -282,21 +292,10 @@ mountinit(char *service, char *mntpt) procsetname("%s restarter", mntpt); break; case -1: - abort(); /* "fork failed\n" */; + sysfatal("fork failed: %r"); default: /* parent: make /srv/dns, mount it, exit */ close(p[0]); - /* - * make a /srv/dns - */ - f = create(service, 1, 0666); - if(f < 0) - abort(); /* service */; - snprint(buf, sizeof buf, "%d", p[1]); - if(write(f, buf, strlen(buf)) != strlen(buf)) - abort(); /* "write %s", service */; - close(f); - /* * put ourselves into the file system */ diff --git a/sys/src/cmd/ndb/dnudpserver.c b/sys/src/cmd/ndb/dnudpserver.c index fd7ef1eab..bac4af058 100644 --- a/sys/src/cmd/ndb/dnudpserver.c +++ b/sys/src/cmd/ndb/dnudpserver.c @@ -288,8 +288,12 @@ udpannounce(char *mntpt) } /* turn on header style interface */ - if(write(ctl, hmsg, strlen(hmsg)) != strlen(hmsg)) - abort(); /* hmsg */ + if(write(ctl, hmsg, strlen(hmsg)) != strlen(hmsg)){ + close(ctl); + if(!whined++) + warning("can't enable headers on %s", datafile); + return -1; + } snprint(datafile, sizeof(datafile), "%s/data", dir); data = open(datafile, ORDWR);