server/: Make initialization errors be non-fatal and restartable.
[tripe] / server / standalone.c
index 9b4976c..b6f3487 100644 (file)
@@ -287,22 +287,23 @@ int main(int argc, char *argv[])
 
   p_init();
   for (i = 0; i < N(tunnels); i++)
-    p_addtun(tunnels[i]);
+    if (p_addtun(tunnels[i])) exit(EXIT_FAILURE);
   if (dflt) p_setdflttun(dflt);
-  p_bind(ailist); freeaddrinfo(ailist);
+  if (p_bind(ailist)) exit(EXIT_FAILURE);
+  freeaddrinfo(ailist);
 
   for (i = 0; tunnels[i]; i++) {
     if (tunnels[i]->flags&TUNF_PRIVOPEN) {
-      ps_split(f & f_daemon);
+      if (ps_split(f & f_daemon)) exit(EXIT_FAILURE);
       break;
     }
   }
 
-  a_init();
+  if (a_init()) exit(EXIT_FAILURE);
   a_signals();
-  a_listen(csock, u, g, csockmode);
+  if (a_listen(csock, u, g, csockmode)) exit(EXIT_FAILURE);
   u_setugid(u, g);
-  km_init(kr_priv, kr_pub, tag_priv);
+  if (km_init(kr_priv, kr_pub, tag_priv)) exit(EXIT_FAILURE);
   kx_init();
   if (f & f_daemon) {
     if (daemonize()) {