clean_connectors.c 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. // SPDX-License-Identifier: GPL-3.0-or-later
  2. #include "exporting_engine.h"
  3. /**
  4. * Clean the instance config.
  5. *
  6. * @param config an instance config structure.
  7. */
  8. static void clean_instance_config(struct instance_config *config)
  9. {
  10. if(!config)
  11. return;
  12. freez((void *)config->type_name);
  13. freez((void *)config->name);
  14. freez((void *)config->destination);
  15. freez((void *)config->username);
  16. freez((void *)config->password);
  17. freez((void *)config->prefix);
  18. freez((void *)config->hostname);
  19. simple_pattern_free(config->charts_pattern);
  20. simple_pattern_free(config->hosts_pattern);
  21. }
  22. /**
  23. * Clean the allocated variables
  24. *
  25. * @param instance an instance data structure.
  26. */
  27. void clean_instance(struct instance *instance)
  28. {
  29. clean_instance_config(&instance->config);
  30. buffer_free(instance->labels);
  31. uv_cond_destroy(&instance->cond_var);
  32. // uv_mutex_destroy(&instance->mutex);
  33. }
  34. /**
  35. * Clean up a simple connector instance on Netdata exit
  36. *
  37. * @param instance an instance data structure.
  38. */
  39. void simple_connector_cleanup(struct instance *instance)
  40. {
  41. info("EXPORTING: cleaning up instance %s ...", instance->config.name);
  42. struct simple_connector_data *simple_connector_data =
  43. (struct simple_connector_data *)instance->connector_specific_data;
  44. freez(simple_connector_data->auth_string);
  45. buffer_free(instance->buffer);
  46. buffer_free(simple_connector_data->buffer);
  47. buffer_free(simple_connector_data->header);
  48. struct simple_connector_buffer *next_buffer = simple_connector_data->first_buffer;
  49. for (int i = 0; i < instance->config.buffer_on_failures; i++) {
  50. struct simple_connector_buffer *current_buffer = next_buffer;
  51. next_buffer = next_buffer->next;
  52. buffer_free(current_buffer->header);
  53. buffer_free(current_buffer->buffer);
  54. freez(current_buffer);
  55. }
  56. #ifdef ENABLE_HTTPS
  57. if (simple_connector_data->conn)
  58. SSL_free(simple_connector_data->conn);
  59. #endif
  60. freez(simple_connector_data);
  61. struct simple_connector_config *simple_connector_config =
  62. (struct simple_connector_config *)instance->config.connector_specific_config;
  63. freez(simple_connector_config);
  64. info("EXPORTING: instance %s exited", instance->config.name);
  65. instance->exited = 1;
  66. return;
  67. }