remote: close file on usteer_init_local_id fread fail
[project/usteer.git] / remote.c
index bad5f8b56b89de01f306eb09e3c5794b59eed908..bf58ea3c9564226068b41c39d24dacb7a3282243 100644 (file)
--- a/remote.c
+++ b/remote.c
@@ -210,6 +210,7 @@ remote_node_free(struct usteer_remote_node *node)
        list_del(&node->list);
        list_del(&node->host_list);
        usteer_sta_node_cleanup(&node->node);
+       usteer_measurement_report_node_cleanup(&node->node);
        free(node);
 
        if (!list_empty(&host->nodes))
@@ -264,6 +265,7 @@ interface_get_node(struct usteer_remote_host *host, const char *name)
        node->name = buf + addr_len + 1;
        node->host = host;
        INIT_LIST_HEAD(&node->node.sta_info);
+       INIT_LIST_HEAD(&node->node.measurements);
 
        list_add_tail(&node->list, &remote_nodes);
        list_add_tail(&node->host_list, &host->nodes);
@@ -313,6 +315,9 @@ interface_recv_msg(struct interface *iface, char *addr_str, void *buf, int len)
        struct blob_attr *cur;
        int rem;
 
+       if (config.local_mode)
+               return;
+
        if (blob_pad_len(data) != len) {
                MSG(DEBUG, "Invalid message length (header: %d, real: %d)\n", blob_pad_len(data), len);
                return;
@@ -604,7 +609,7 @@ usteer_check_timeout(void)
        int timeout = config.remote_node_timeout;
 
        list_for_each_entry_safe(node, tmp, &remote_nodes, list) {
-               if (node->check++ > timeout)
+               if (config.local_mode || node->check++ > timeout)
                        remote_node_free(node);
        }
 }
@@ -651,7 +656,8 @@ usteer_send_update_timer(struct uloop_timeout *t)
        usteer_update_time();
        uloop_timeout_set(t, config.remote_update_interval);
 
-       if (!avl_is_empty(&local_nodes) || host_info_blob) {
+       if (!config.local_mode &&
+           (!avl_is_empty(&local_nodes) || host_info_blob)) {
                c = usteer_update_init();
                for_each_local_node(node)
                        usteer_send_node(node, NULL);
@@ -672,8 +678,10 @@ usteer_init_local_id(void)
                return -1;
        }
 
-       if (fread(&local_id, sizeof(local_id), 1, f) < 1)
+       if (fread(&local_id, sizeof(local_id), 1, f) < 1) {
+               fclose(f);
                return -1;
+       }
 
        fclose(f);
        return 0;