From: Bastian Dehn Date: Sun, 2 Feb 2025 17:38:40 +0000 (+0100) Subject: Revert "change write direct to response" X-Git-Tag: v1.0.30^2~1 X-Git-Url: https://gitweb.hhaalo.de/?a=commitdiff_plain;h=70e0cb4994fad02a8e94eab0fe7610a854ad0306;p=sane-kds-s2000w-net.git Revert "change write direct to response" This reverts commit 64c85b53106e000fb91859a6d4a7304cc5b176f7. --- diff --git a/src/kds_s2000w_client.c b/src/kds_s2000w_client.c index a56902d..bf441ba 100644 --- a/src/kds_s2000w_client.c +++ b/src/kds_s2000w_client.c @@ -52,6 +52,16 @@ void _kds_s2000w_client_print_error_result(CURLcode result) kds_s2000w_debug_printf(ERROR, curl_easy_strerror(result)); } +void _kds_s2000w_client_stream_to_response(char* mem, response* resp, size_t* size) +{ + kds_s2000w_debug_printf(ALL, "kds_s2000w_client_stream_to_response"); + + size_t incl_null_term = *size + 1; + resp->data = malloc(sizeof(char) * incl_null_term); + resp->size = incl_null_term; + memcpy(resp->data, mem, incl_null_term); +} + void _kds_s2000w_client_set_ssl_verification_off(CURL* curl) { if (config->ssl_verify) @@ -153,7 +163,7 @@ int kds_s2000w_client_open_session(response* resp) fclose(stream); stream = NULL; - resp->data = *mem; + _kds_s2000w_client_stream_to_response(*mem, resp, sizeloc); curl_url_cleanup(url_handler); url_handler = NULL; @@ -163,6 +173,8 @@ int kds_s2000w_client_open_session(response* resp) body = NULL; curl_free(url); url = NULL; + free(*mem); + *mem = NULL; free(mem); mem = NULL; free(sizeloc); @@ -246,7 +258,7 @@ int kds_s2000w_client_get_capabilities(response* resp) fclose(stream); stream = NULL; - resp->data = *mem; + _kds_s2000w_client_stream_to_response(*mem, resp, sizeloc); curl_url_cleanup(url_handler); url_handler = NULL; @@ -254,6 +266,8 @@ int kds_s2000w_client_get_capabilities(response* resp) headers = NULL; curl_free(url); url = NULL; + free(*mem); + *mem = NULL; free(mem); mem = NULL; free(sizeloc); @@ -304,7 +318,7 @@ int kds_s2000w_client_status_session(int64_t sessionid, response* resp) fclose(stream); stream = NULL; - resp->data = *mem; + _kds_s2000w_client_stream_to_response(*mem, resp, sizeloc); curl_url_cleanup(url_handler); url_handler = NULL; @@ -312,6 +326,8 @@ int kds_s2000w_client_status_session(int64_t sessionid, response* resp) headers = NULL; curl_free(url); url = NULL; + free(*mem); + *mem = NULL; free(mem); mem = NULL; free(sizeloc); @@ -362,7 +378,7 @@ int kds_s2000w_client_start_scan(int64_t sessionid, response* resp) fclose(stream); stream = NULL; - resp->data = *mem; + _kds_s2000w_client_stream_to_response(*mem, resp, sizeloc); curl_url_cleanup(url_handler); url_handler = NULL; @@ -370,6 +386,8 @@ int kds_s2000w_client_start_scan(int64_t sessionid, response* resp) headers = NULL; curl_free(url); url = NULL; + free(*mem); + *mem = NULL; free(mem); mem = NULL; free(sizeloc); @@ -420,7 +438,7 @@ int kds_s2000w_client_stop_scan(int64_t sessionid, response* resp) fclose(stream); stream = NULL; - resp->data = *mem; + _kds_s2000w_client_stream_to_response(*mem, resp, sizeloc); curl_url_cleanup(url_handler); url_handler = NULL; @@ -428,6 +446,8 @@ int kds_s2000w_client_stop_scan(int64_t sessionid, response* resp) headers = NULL; curl_free(url); url = NULL; + free(*mem); + *mem = NULL; free(mem); mem = NULL; free(sizeloc); @@ -480,7 +500,7 @@ int kds_s2000w_client_get_image(int64_t sessionid, int img_number, response* res fclose(stream); stream = NULL; - resp->data = *mem; + _kds_s2000w_client_stream_to_response(*mem, resp, sizeloc); curl_url_cleanup(url_handler); url_handler = NULL; @@ -488,6 +508,8 @@ int kds_s2000w_client_get_image(int64_t sessionid, int img_number, response* res headers = NULL; curl_free(url); url = NULL; + free(*mem); + *mem = NULL; free(mem); mem = NULL; free(sizeloc); @@ -542,7 +564,7 @@ int kds_s2000w_client_delete_image(int64_t sessionid, int img_number, response* fclose(stream); stream = NULL; - resp->data = *mem; + _kds_s2000w_client_stream_to_response(*mem, resp, sizeloc); curl_url_cleanup(url_handler); url_handler = NULL; @@ -552,6 +574,8 @@ int kds_s2000w_client_delete_image(int64_t sessionid, int img_number, response* headers = NULL; curl_free(url); url = NULL; + free(*mem); + *mem = NULL; free(mem); mem = NULL; free(sizeloc); @@ -601,7 +625,7 @@ int kds_s2000w_client_get_option(int64_t sessionid, response* resp) fclose(stream); stream = NULL; - resp->data = *mem; + _kds_s2000w_client_stream_to_response(*mem, resp, sizeloc); curl_url_cleanup(url_handler); url_handler = NULL; @@ -609,6 +633,8 @@ int kds_s2000w_client_get_option(int64_t sessionid, response* resp) headers = NULL; curl_free(url); url = NULL; + free(*mem); + *mem = NULL; free(mem); mem = NULL; free(sizeloc);