Apply patch from Scott Lamb preventing an infinite loop when sending SIGALRM.
[oweals/tinc.git] / src / net.c
index 81a0d894daaf8f818a8139c72404be5f40a7ea5f..f6b14704607477544b6a34f54cf2144096fe2548 100644 (file)
--- a/src/net.c
+++ b/src/net.c
@@ -424,17 +424,12 @@ int main_loop(void)
 
                while((event = get_expired_event())) {
                        event->handler(event->data);
-                       free(event);
+                       free_event(event);
                }
 
                if(sigalrm) {
                        logger(LOG_INFO, _("Flushing event queue"));
-
-                       while(event_tree->head) {
-                               event = event_tree->head->data;
-                               event->handler(event->data);
-                               event_del(event);
-                       }
+                       flush_events();
                        sigalrm = false;
                }
 
@@ -463,7 +458,8 @@ int main_loop(void)
                                
                                if(c->outgoing) {
                                        free(c->outgoing->name);
-                                       freeaddrinfo(c->outgoing->ai);
+                                       if(c->outgoing->ai)
+                                               freeaddrinfo(c->outgoing->ai);
                                        free(c->outgoing);
                                        c->outgoing = NULL;
                                }