]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
change remove curl global variable
authorBastian Dehn <hhaalo@arcor.de>
Mon, 13 Oct 2025 19:20:27 +0000 (21:20 +0200)
committerBastian Dehn <hhaalo@arcor.de>
Mon, 13 Oct 2025 19:20:27 +0000 (21:20 +0200)
src/kds_s2000w_client.c

index e00a405f578187b5cb20597d19908f8c94ae6f80..6b9fe3e182a061bda6cb0e03da7eb6d3823e1c94 100644 (file)
@@ -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);