Update portability notes.
[darkstat] / dns.c
diff --git a/dns.c b/dns.c
index 49a49c2..163aa56 100644 (file)
--- a/dns.c
+++ b/dns.c
@@ -1,5 +1,5 @@
 /* darkstat 3
- * copyright (c) 2001-2011 Emil Mikulic.
+ * copyright (c) 2001-2014 Emil Mikulic.
  *
  * dns.c: synchronous DNS in a child process.
  *
@@ -8,6 +8,7 @@
  */
 
 #include "cdefs.h"
+#include "cap.h"
 #include "conv.h"
 #include "decode.h"
 #include "dns.h"
@@ -65,8 +66,9 @@ dns_init(const char *privdrop_user)
       daemonize_finish(); /* drop our copy of the lifeline! */
       if (signal(SIGUSR1, SIG_IGN) == SIG_ERR)
          errx(1, "signal(SIGUSR1, ignore) failed");
+      cap_free_args();
       dns_main();
-      exit(0);
+      errx(1, "DNS child fell out of dns_main()");
    } else {
       /* We are the parent. */
       close(dns_sock[CHILD]);
@@ -111,12 +113,7 @@ tree_cmp(struct tree_rec *a, struct tree_rec *b)
 }
 
 static RB_HEAD(tree_t, tree_rec) ip_tree = RB_INITIALIZER(&tree_rec);
-/* Quiet warnings. */
-static struct tree_rec * tree_t_RB_NEXT(struct tree_rec *elm)
-   _unused_;
-static struct tree_rec * tree_t_RB_MINMAX(struct tree_t *head, int val)
-   _unused_;
-RB_GENERATE(tree_t, tree_rec, ptree, tree_cmp)
+RB_GENERATE_STATIC(tree_t, tree_rec, ptree, tree_cmp)
 
 void
 dns_queue(const struct addr *const ipaddr)
@@ -380,7 +377,7 @@ dns_main(void)
                                  host, sizeof(host), NULL, 0, flags);
                break;
             default:
-               ret = EAI_FAMILY;
+               errx(1, "unexpected ip.family = %d", ip.family);
          }
 
          if (ret != 0) {