X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fgmond.c;h=a1fa9ea4967285824eecb4a6f5e696ca94fc0938;hb=007d96fe10beb6c6d4f20c79851404be18a3418f;hp=3c746c48887c3e678d42e2417b3d11bd38a7b1ec;hpb=9e7b3a035836474cb4af253b248de30d5eb97f4d;p=collectd.git diff --git a/src/gmond.c b/src/gmond.c index 3c746c48..a1fa9ea4 100644 --- a/src/gmond.c +++ b/src/gmond.c @@ -217,13 +217,13 @@ static int create_sockets (socket_entry_t **ret_sockets, /* {{{ */ struct addrinfo *ai_ptr; int ai_return; - socket_entry_t *sockets; - size_t sockets_num; + socket_entry_t *sockets = NULL; + size_t sockets_num = 0; int status; - - sockets = *ret_sockets; - sockets_num = *ret_sockets_num; + + if (*ret_sockets != NULL) + return (EINVAL); memset (&ai_hints, 0, sizeof (ai_hints)); ai_hints.ai_flags = 0; @@ -355,8 +355,11 @@ static int create_sockets (socket_entry_t **ret_sockets, /* {{{ */ freeaddrinfo (ai_list); - if ((*ret_sockets_num) >= sockets_num) + if (sockets_num == 0) + { + sfree (sockets); return (-1); + } *ret_sockets = sockets; *ret_sockets_num = sockets_num; @@ -660,7 +663,7 @@ static int mc_handle_value_msg (Ganglia_value_msg *msg) /* {{{ */ if ((map->ds_type == DS_TYPE_COUNTER) || (map->ds_type == DS_TYPE_ABSOLUTE)) val_copy = value_counter; - if (map->ds_type == DS_TYPE_GAUGE) + else if (map->ds_type == DS_TYPE_GAUGE) val_copy = value_gauge; else if (map->ds_type == DS_TYPE_DERIVE) val_copy = value_derive; @@ -867,6 +870,7 @@ static void *mc_receive_thread (void *arg) /* {{{ */ } } /* while (mc_receive_thread_loop != 0) */ + free (mc_receive_socket_entries); return ((void *) 0); } /* }}} void *mc_receive_thread */ @@ -879,7 +883,7 @@ static int mc_receive_thread_start (void) /* {{{ */ mc_receive_thread_loop = 1; - status = pthread_create (&mc_receive_thread_id, /* attr = */ NULL, + status = plugin_thread_create (&mc_receive_thread_id, /* attr = */ NULL, mc_receive_thread, /* args = */ NULL); if (status != 0) {