scripts/update-cmd.pl: run update two times
[project/unetd.git] / network.c
index 15429ad0591228c8ea8059ed72cf33475af22f22..b39deb4c8f1c6733f843092dbba8f28e001cb635 100644 (file)
--- a/network.c
+++ b/network.c
@@ -2,6 +2,7 @@
 /*
  * Copyright (C) 2022 Felix Fietkau <nbd@nbd.name>
  */
+#define _GNU_SOURCE
 #include <arpa/inet.h>
 #include <sys/types.h>
 #include <sys/socket.h>
@@ -127,7 +128,9 @@ static int network_load_dynamic(struct network *net)
        FILE *f = NULL;
        int ret = -1;
 
-       asprintf(&fname, "%s/%s.bin", data_dir, network_name(net));
+       if (asprintf(&fname, "%s/%s.bin", data_dir, network_name(net)) < 0)
+               return -1;
+
        f = fopen(fname, "r");
        free(fname);
 
@@ -174,7 +177,9 @@ int network_save_dynamic(struct network *net)
            !net->net_data_len)
                return -1;
 
-       asprintf(&fname, "%s/%s.bin.XXXXXXXX", data_dir, network_name(net));
+       if (asprintf(&fname, "%s/%s.bin.XXXXXXXX", data_dir, network_name(net)) < 0)
+               return -1;
+
        fd = mkstemp(fname);
        if (fd < 0)
                goto error;
@@ -436,6 +441,7 @@ static int network_setup(struct network *net)
 
 static void network_teardown(struct network *net)
 {
+       uloop_timeout_cancel(&net->connect_timer);
        uloop_timeout_cancel(&net->reload_timer);
        network_do_update(net, false);
        network_pex_close(net);