clean_connectors.c 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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->prefix);
  16. simple_pattern_free(config->charts_pattern);
  17. simple_pattern_free(config->hosts_pattern);
  18. }
  19. /**
  20. * Clean the allocated variables
  21. *
  22. * @param instance an instance data structure.
  23. */
  24. void clean_instance(struct instance *instance)
  25. {
  26. clean_instance_config(&instance->config);
  27. buffer_free(instance->labels);
  28. uv_cond_destroy(&instance->cond_var);
  29. // uv_mutex_destroy(&instance->mutex);
  30. }
  31. /**
  32. * Clean up a simple connector instance on Netdata exit
  33. *
  34. * @param instance an instance data structure.
  35. */
  36. void simple_connector_cleanup(struct instance *instance)
  37. {
  38. info("EXPORTING: cleaning up instance %s ...", instance->config.name);
  39. struct simple_connector_data *simple_connector_data =
  40. (struct simple_connector_data *)instance->connector_specific_data;
  41. buffer_free(instance->buffer);
  42. buffer_free(simple_connector_data->buffer);
  43. buffer_free(simple_connector_data->header);
  44. struct simple_connector_buffer *next_buffer = simple_connector_data->first_buffer;
  45. for (int i = 0; i < instance->config.buffer_on_failures; i++) {
  46. struct simple_connector_buffer *current_buffer = next_buffer;
  47. next_buffer = next_buffer->next;
  48. buffer_free(current_buffer->header);
  49. buffer_free(current_buffer->buffer);
  50. freez(current_buffer);
  51. }
  52. #ifdef ENABLE_HTTPS
  53. if (simple_connector_data->conn)
  54. SSL_free(simple_connector_data->conn);
  55. #endif
  56. freez(simple_connector_data);
  57. struct simple_connector_config *simple_connector_config =
  58. (struct simple_connector_config *)instance->config.connector_specific_config;
  59. freez(simple_connector_config);
  60. info("EXPORTING: instance %s exited", instance->config.name);
  61. instance->exited = 1;
  62. return;
  63. }