| 979 | } |
| 980 | |
| 981 | static int add_clusterer_node(clusterer_node_t **cl_node_list, node_info_t *n_info) |
| 982 | { |
| 983 | clusterer_node_t *new_node = NULL; |
| 984 | |
| 985 | new_node = pkg_malloc(sizeof *new_node); |
| 986 | if (!new_node) { |
| 987 | LM_ERR("no more pkg memory\n"); |
| 988 | goto error; |
| 989 | } |
| 990 | |
| 991 | new_node->node_id = n_info->node_id; |
| 992 | |
| 993 | if (n_info->description.s) { |
| 994 | new_node->description.s = pkg_malloc(n_info->description.len * sizeof(char)); |
| 995 | if (!new_node->description.s) { |
| 996 | LM_ERR("no more pkg memory\n"); |
| 997 | goto error; |
| 998 | } |
| 999 | new_node->description.len = n_info->description.len; |
| 1000 | memcpy(new_node->description.s, n_info->description.s, n_info->description.len); |
| 1001 | } else { |
| 1002 | new_node->description.s = NULL; |
| 1003 | new_node->description.len = 0; |
| 1004 | } |
| 1005 | |
| 1006 | if (n_info->sip_addr.s) { |
| 1007 | new_node->sip_addr.s = pkg_malloc(n_info->sip_addr.len * sizeof(char)); |
| 1008 | if (!new_node->sip_addr.s) { |
| 1009 | LM_ERR("no more pkg memory\n"); |
| 1010 | goto error; |
| 1011 | } |
| 1012 | new_node->sip_addr.len = n_info->sip_addr.len; |
| 1013 | memcpy(new_node->sip_addr.s, n_info->sip_addr.s, n_info->sip_addr.len); |
| 1014 | } else { |
| 1015 | new_node->sip_addr.s = NULL; |
| 1016 | new_node->sip_addr.len = 0; |
| 1017 | } |
| 1018 | |
| 1019 | memcpy(&new_node->addr, &n_info->addr, sizeof(n_info->addr)); |
| 1020 | new_node->next = NULL; |
| 1021 | |
| 1022 | if (*cl_node_list) |
| 1023 | new_node->next = *cl_node_list; |
| 1024 | |
| 1025 | *cl_node_list = new_node; |
| 1026 | return 0; |
| 1027 | |
| 1028 | error: |
| 1029 | if (new_node) |
| 1030 | free_clusterer_node(new_node); |
| 1031 | return -1; |
| 1032 | } |
| 1033 | |
| 1034 | void free_clusterer_nodes(clusterer_node_t *nodes) |
| 1035 | { |
no test coverage detected