]> git.meshlink.io Git - meshlink/blobdiff - src/meshlink.c
Fix a crash with some network configurations.
[meshlink] / src / meshlink.c
index a8f8c928876b034fb169a4c92821faebd851226f..d54fe30b1ae8f49500214036709f983b6a015ba3 100644 (file)
@@ -366,7 +366,7 @@ char *meshlink_get_local_address_for_family(meshlink_handle_t *mesh, int family)
                for(struct ifaddrs *ifap = ifa; ifap; ifap = ifap->ifa_next) {
                        sockaddr_t *sa = (sockaddr_t *)ifap->ifa_addr;
 
-                       if(sa->sa.sa_family != family) {
+                       if(!sa || sa->sa.sa_family != family) {
                                continue;
                        }
 
@@ -4420,7 +4420,20 @@ void meshlink_set_dev_class_maxtimeout(struct meshlink_handle *mesh, dev_class_t
        pthread_mutex_unlock(&mesh->mutex);
 }
 
-extern void meshlink_set_inviter_commits_first(struct meshlink_handle *mesh, bool inviter_commits_first) {
+void meshlink_reset_timers(struct meshlink_handle *mesh) {
+       if(!mesh) {
+               return;
+       }
+
+       if(pthread_mutex_lock(&mesh->mutex) != 0) {
+               abort();
+       }
+
+       handle_network_change(mesh, true);
+       pthread_mutex_unlock(&mesh->mutex);
+}
+
+void meshlink_set_inviter_commits_first(struct meshlink_handle *mesh, bool inviter_commits_first) {
        if(!mesh) {
                meshlink_errno = EINVAL;
                return;