From e9715f31416dfbb4c0d20f76981cf6527a3cdac8 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Mon, 13 Oct 2025 21:20:27 +0200 Subject: [PATCH] change remove curl global variable --- src/kds_s2000w_client.c | 76 ++++++++++++++++++++++------------------- 1 file changed, 41 insertions(+), 35 deletions(-) diff --git a/src/kds_s2000w_client.c b/src/kds_s2000w_client.c index e00a405..6b9fe3e 100644 --- a/src/kds_s2000w_client.c +++ b/src/kds_s2000w_client.c @@ -24,7 +24,6 @@ #define CAPABILITIES_VERSION_2 "v2" #define CONFIGURATION_PATH "/api/session/configuration" -CURL* curl = NULL; client_config_t* client_config = NULL; char* _kds_s2000w_client_strdup(const char* str) @@ -38,7 +37,7 @@ char* _kds_s2000w_client_strdup(const char* str) return new_str; } -void _kds_s2000w_client_set_verbose() +void _kds_s2000w_client_set_verbose(CURL* curl) { uint8_t log_level = kds_s2000w_debug_get_log_level(); @@ -123,7 +122,6 @@ void kds_s2000w_client_init(client_config_t* config) client_config->heartbeat = config->heartbeat; curl_global_init(CURL_GLOBAL_ALL); - curl = curl_easy_init(); } void kds_s2000w_client_free() @@ -136,8 +134,6 @@ void kds_s2000w_client_free() client_config->username = NULL; free(client_config); client_config = NULL; - curl_easy_cleanup(curl); - curl = NULL; curl_global_cleanup(); } @@ -172,8 +168,7 @@ uint8_t kds_s2000w_client_open_session(response* resp) { kds_s2000w_debug_printf(ALL, "kds_s2000w_client_open_session"); - curl_easy_reset(curl); - + CURL* curl = curl_easy_init(); char* url = NULL; CURLU* url_handler = curl_url(); curl_url_set(url_handler, CURLUPART_URL, client_config->scanner_url, 0); @@ -207,7 +202,7 @@ uint8_t kds_s2000w_client_open_session(response* resp) curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errbuf); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, _kds_s2000w_client_write_callback); curl_easy_setopt(curl, CURLOPT_WRITEDATA, resp); - _kds_s2000w_client_set_verbose(); + _kds_s2000w_client_set_verbose(curl); CURLcode result = curl_easy_perform(curl); _kds_s2000w_client_add_null_terminate_to_response(resp); curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &resp->code); @@ -219,6 +214,8 @@ uint8_t kds_s2000w_client_open_session(response* resp) url_handler = NULL; curl_slist_free_all(headers); headers = NULL; + curl_easy_cleanup(curl); + curl = NULL; free(body); body = NULL; curl_free(url); @@ -233,8 +230,7 @@ void kds_s2000w_client_close_session(int64_t sessionid) { kds_s2000w_debug_printf(ALL, "kds_s2000w_client_close_session"); - curl_easy_reset(curl); - + CURL* curl = curl_easy_init(); char* url = NULL; CURLU* url_handler = curl_url(); curl_url_set(url_handler, CURLUPART_URL, client_config->scanner_url, 0); @@ -264,7 +260,7 @@ void kds_s2000w_client_close_session(int64_t sessionid) char* errbuf = _kds_s2000w_client_errbuf_init(); curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errbuf); - _kds_s2000w_client_set_verbose(); + _kds_s2000w_client_set_verbose(curl); CURLcode result = curl_easy_perform(curl); _kds_s2000w_client_print_error_result(result, errbuf); @@ -275,6 +271,8 @@ void kds_s2000w_client_close_session(int64_t sessionid) url = NULL; curl_slist_free_all(headers); headers = NULL; + curl_easy_cleanup(curl); + curl = NULL; free(header_str); header_str = NULL; free(errbuf); @@ -285,8 +283,7 @@ uint8_t kds_s2000w_client_get_capabilities(response* resp) { kds_s2000w_debug_printf(ALL, "kds_s2000w_client_get_capabilities"); - curl_easy_reset(curl); - + CURL* curl = curl_easy_init(); char* url = NULL; CURLU* url_handler = curl_url(); curl_url_set(url_handler, CURLUPART_URL, client_config->scanner_url, 0); @@ -307,7 +304,7 @@ uint8_t kds_s2000w_client_get_capabilities(response* resp) curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errbuf); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, _kds_s2000w_client_write_callback); curl_easy_setopt(curl, CURLOPT_WRITEDATA, resp); - _kds_s2000w_client_set_verbose(); + _kds_s2000w_client_set_verbose(curl); CURLcode result = curl_easy_perform(curl); _kds_s2000w_client_add_null_terminate_to_response(resp); curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &resp->code); @@ -319,6 +316,8 @@ uint8_t kds_s2000w_client_get_capabilities(response* resp) url_handler = NULL; curl_slist_free_all(headers); headers = NULL; + curl_easy_cleanup(curl); + curl = NULL; curl_free(url); url = NULL; free(errbuf); @@ -334,8 +333,7 @@ uint8_t kds_s2000w_client_status_session(int64_t sessionid, response* resp) kds_s2000w_heartbeat_join_thread(); kds_s2000w_heartbeat_wait_seconds(&client_config->heartbeat); - curl_easy_reset(curl); - + CURL* curl = curl_easy_init(); char* url = NULL; CURLU* url_handler = curl_url(); curl_url_set(url_handler, CURLUPART_URL, client_config->scanner_url, 0); @@ -367,7 +365,7 @@ uint8_t kds_s2000w_client_status_session(int64_t sessionid, response* resp) curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errbuf); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, _kds_s2000w_client_write_callback); curl_easy_setopt(curl, CURLOPT_WRITEDATA, resp); - _kds_s2000w_client_set_verbose(); + _kds_s2000w_client_set_verbose(curl); CURLcode result = curl_easy_perform(curl); _kds_s2000w_client_add_null_terminate_to_response(resp); curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &resp->code); @@ -381,6 +379,8 @@ uint8_t kds_s2000w_client_status_session(int64_t sessionid, response* resp) headers = NULL; curl_free(url); url = NULL; + curl_easy_cleanup(curl); + curl = NULL; free(header_str); header_str = NULL; free(errbuf); @@ -393,8 +393,7 @@ uint8_t kds_s2000w_client_start_scan(int64_t sessionid) { kds_s2000w_debug_printf(ALL, "kds_s2000w_client_start_scan"); - curl_easy_reset(curl); - + CURL* curl = curl_easy_init(); char* url = NULL; CURLU* url_handler = curl_url(); curl_url_set(url_handler, CURLUPART_URL, client_config->scanner_url, 0); @@ -425,7 +424,7 @@ uint8_t kds_s2000w_client_start_scan(int64_t sessionid) char* errbuf = _kds_s2000w_client_errbuf_init(); curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errbuf); - _kds_s2000w_client_set_verbose(); + _kds_s2000w_client_set_verbose(curl); CURLcode result = curl_easy_perform(curl); _kds_s2000w_client_print_error_status(curl); @@ -437,6 +436,8 @@ uint8_t kds_s2000w_client_start_scan(int64_t sessionid) headers = NULL; curl_free(url); url = NULL; + curl_easy_cleanup(curl); + curl = NULL; free(header_str); header_str = NULL; free(errbuf); @@ -449,8 +450,7 @@ uint8_t kds_s2000w_client_stop_scan(int64_t sessionid) { kds_s2000w_debug_printf(ALL, "kds_s2000w_client_stop_scan"); - curl_easy_reset(curl); - + CURL* curl = curl_easy_init(); char* url = NULL; CURLU* url_handler = curl_url(); curl_url_set(url_handler, CURLUPART_URL, client_config->scanner_url, 0); @@ -481,7 +481,7 @@ uint8_t kds_s2000w_client_stop_scan(int64_t sessionid) char* errbuf = _kds_s2000w_client_errbuf_init(); curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errbuf); - _kds_s2000w_client_set_verbose(); + _kds_s2000w_client_set_verbose(curl); CURLcode result = curl_easy_perform(curl); _kds_s2000w_client_print_error_status(curl); @@ -493,6 +493,8 @@ uint8_t kds_s2000w_client_stop_scan(int64_t sessionid) headers = NULL; curl_free(url); url = NULL; + curl_easy_cleanup(curl); + curl = NULL; free(header_str); header_str = NULL; free(errbuf); @@ -505,8 +507,7 @@ uint8_t kds_s2000w_client_get_image(int64_t sessionid, uint8_t img_number, respo { kds_s2000w_debug_printf(ALL, "kds_s2000w_client_get_image"); - curl_easy_reset(curl); - + CURL* curl = curl_easy_init(); char* url = NULL; CURLU* url_handler = curl_url(); char* url_path = malloc(sizeof(char) * MAX_STR_BUFFER_LENGTH); @@ -549,7 +550,7 @@ uint8_t kds_s2000w_client_get_image(int64_t sessionid, uint8_t img_number, respo curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errbuf); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, _kds_s2000w_client_write_callback); curl_easy_setopt(curl, CURLOPT_WRITEDATA, resp); - _kds_s2000w_client_set_verbose(); + _kds_s2000w_client_set_verbose(curl); CURLcode result = curl_easy_perform(curl); curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &resp->code); @@ -562,6 +563,8 @@ uint8_t kds_s2000w_client_get_image(int64_t sessionid, uint8_t img_number, respo headers = NULL; curl_free(url); url = NULL; + curl_easy_cleanup(curl); + curl = NULL; free(url_path); url_path = NULL; free(header_str); @@ -576,8 +579,7 @@ uint8_t kds_s2000w_client_delete_image(int64_t sessionid, uint8_t img_number) { kds_s2000w_debug_printf(ALL, "kds_s2000w_client_delete_image"); - curl_easy_reset(curl); - + CURL* curl = curl_easy_init(); char* url = NULL; CURLU* url_handler = curl_url(); char* url_path = malloc(sizeof(char) * MAX_STR_BUFFER_LENGTH); @@ -618,7 +620,7 @@ uint8_t kds_s2000w_client_delete_image(int64_t sessionid, uint8_t img_number) char* errbuf = _kds_s2000w_client_errbuf_init(); curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errbuf); - _kds_s2000w_client_set_verbose(); + _kds_s2000w_client_set_verbose(curl); CURLcode result = curl_easy_perform(curl); _kds_s2000w_client_print_error_status(curl); @@ -632,6 +634,8 @@ uint8_t kds_s2000w_client_delete_image(int64_t sessionid, uint8_t img_number) headers = NULL; curl_free(url); url = NULL; + curl_easy_cleanup(curl); + curl = NULL; free(header_str); header_str = NULL; free(errbuf); @@ -644,8 +648,7 @@ uint8_t kds_s2000w_client_get_option(int64_t sessionid, response* resp) { kds_s2000w_debug_printf(ALL, "kds_s2000w_client_get_option"); - curl_easy_reset(curl); - + CURL* curl = curl_easy_init(); char* url = NULL; CURLU* url_handler = curl_url(); curl_url_set(url_handler, CURLUPART_URL, client_config->scanner_url, 0); @@ -677,7 +680,7 @@ uint8_t kds_s2000w_client_get_option(int64_t sessionid, response* resp) curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errbuf); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, _kds_s2000w_client_write_callback); curl_easy_setopt(curl, CURLOPT_WRITEDATA, resp); - _kds_s2000w_client_set_verbose(); + _kds_s2000w_client_set_verbose(curl); CURLcode result = curl_easy_perform(curl); _kds_s2000w_client_add_null_terminate_to_response(resp); curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &resp->code); @@ -691,6 +694,8 @@ uint8_t kds_s2000w_client_get_option(int64_t sessionid, response* resp) headers = NULL; curl_free(url); url = NULL; + curl_easy_cleanup(curl); + curl = NULL; free(header_str); header_str = NULL; free(errbuf); @@ -703,8 +708,7 @@ uint8_t kds_s2000w_client_set_option(int64_t sessionid, response* resp) { kds_s2000w_debug_printf(ALL, "kds_s2000w_client_set_option"); - curl_easy_reset(curl); - + CURL* curl = curl_easy_init(); char* url = NULL; CURLU* url_handler = curl_url(); curl_url_set(url_handler, CURLUPART_URL, client_config->scanner_url, 0); @@ -736,7 +740,7 @@ uint8_t kds_s2000w_client_set_option(int64_t sessionid, response* resp) char* errbuf = _kds_s2000w_client_errbuf_init(); curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errbuf); - _kds_s2000w_client_set_verbose(); + _kds_s2000w_client_set_verbose(curl); CURLcode result = curl_easy_perform(curl); curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &resp->code); @@ -749,6 +753,8 @@ uint8_t kds_s2000w_client_set_option(int64_t sessionid, response* resp) headers = NULL; curl_free(url); url = NULL; + curl_easy_cleanup(curl); + curl = NULL; free(header_str); header_str = NULL; free(errbuf); -- 2.47.3