]> git.meshlink.io Git - meshlink/blobdiff - src/net.c
Fix a debug message being logged incorrectly.
[meshlink] / src / net.c
index 3c1ad3e625ee7b237fb590243719693f41a73297..05049cffca96c87039f94b6b5b11e5d4c2b224d8 100644 (file)
--- a/src/net.c
+++ b/src/net.c
@@ -29,6 +29,7 @@
 #include "net.h"
 #include "netutl.h"
 #include "protocol.h"
+#include "sptps.h"
 #include "xalloc.h"
 
 #include <assert.h>
@@ -609,12 +610,26 @@ static void periodic_handler(event_loop_t *loop, void *data) {
 
        for splay_each(node_t, n, mesh->nodes) {
                if(n->status.dirty) {
-                       if(node_write_config(mesh, n)) {
+                       if(!node_write_config(mesh, n)) {
                                logger(mesh, MESHLINK_DEBUG, "Could not update %s", n->name);
                        }
 
                        n->status.dirty = false;
                }
+
+               if(n->status.validkey && n->last_req_key + 3600 < mesh->loop.now.tv_sec) {
+                       logger(mesh, MESHLINK_DEBUG, "SPTPS key renewal for node %s", n->name);
+
+                       if(!sptps_force_kex(&n->sptps)) {
+                               logger(mesh, MESHLINK_ERROR, "SPTPS key renewal for node %s failed", n->name);
+                               n->status.validkey = false;
+                               sptps_stop(&n->sptps);
+                               n->status.waitingforkey = false;
+                               n->last_req_key = 0;
+                       } else {
+                               n->last_req_key = mesh->loop.now.tv_sec;
+                       }
+               }
        }
 
        timeout_set(&mesh->loop, data, &(struct timespec) {