Implement a PEM-like format for Ed25519 keys.
[tinc] / src / net.c
index 0b43d5a..92f6be8 100644 (file)
--- a/src/net.c
+++ b/src/net.c
@@ -32,7 +32,6 @@
 #include "names.h"
 #include "net.h"
 #include "netutl.h"
-#include "process.h"
 #include "protocol.h"
 #include "subnet.h"
 #include "xalloc.h"
@@ -130,6 +129,12 @@ void terminate_connection(connection_t *c, bool report) {
 
        if(outgoing)
                do_outgoing_connection(outgoing);
+
+#ifndef HAVE_MINGW
+       /* Clean up dead proxy processes */
+
+       while(waitpid(-1, NULL, WNOHANG) > 0);
+#endif
 }
 
 /*
@@ -199,7 +204,7 @@ static void periodic_handler(void *data) {
                                nc++;
                }
 
-               if(nc < autoconnect) {
+               if(nc < 3) {
                        /* Not enough active connections, try to add one.
                           Choose a random node, if we don't have a connection to it,
                           and we are not already trying to make one, create an
@@ -233,7 +238,7 @@ static void periodic_handler(void *data) {
                                }
                                break;
                        }
-               } else if(nc > autoconnect) {
+               } else if(nc > 3) {
                        /* Too many active connections, try to remove one.
                           Choose a random outgoing connection to a node
                           that has at least one other connection.
@@ -259,7 +264,7 @@ static void periodic_handler(void *data) {
                        }
                }
 
-               if(nc >= autoconnect) {
+               if(nc >= 3) {
                        /* If we have enough active connections,
                           remove any pending outgoing connections.
                        */
@@ -298,7 +303,8 @@ static void sigterm_handler(void *data) {
 static void sighup_handler(void *data) {
        logger(DEBUG_ALWAYS, LOG_NOTICE, "Got %s signal", strsignal(((signal_t *)data)->signum));
        reopenlogger();
-       reload_configuration();
+       if(reload_configuration())
+               exit(1);
 }
 
 static void sigalrm_handler(void *data) {
@@ -316,8 +322,7 @@ int reload_configuration(void) {
        init_configuration(&config_tree);
 
        if(!read_server_config()) {
-               logger(DEBUG_ALWAYS, LOG_ERR, "Unable to reread configuration file, exitting.");
-               event_exit();
+               logger(DEBUG_ALWAYS, LOG_ERR, "Unable to reread configuration file.");
                return EINVAL;
        }