From: Bastian Dehn Date: Wed, 15 Oct 2025 07:06:52 +0000 (+0200) Subject: optimize get capabilities X-Git-Tag: v1.1.12^2~3^2~7 X-Git-Url: https://gitweb.hhaalo.de/?a=commitdiff_plain;h=73faa48b5b348f91ab834331ed31eb8a33f3a921;p=sane-kds-s2000w-net.git optimize get capabilities --- diff --git a/src/kds_s2000w_client.c b/src/kds_s2000w_client.c index c7cd010..ff1a822 100644 --- a/src/kds_s2000w_client.c +++ b/src/kds_s2000w_client.c @@ -274,7 +274,7 @@ uint8_t kds_s2000w_client_open_session(response* resp) curl_param_t* param = _kds_s2000w_client_param_init(0); if (param == NULL) - return 1; + return CURLE_OUT_OF_MEMORY; curl_url_set(param->url_handler, CURLUPART_URL, client_config->scanner_url, 0); curl_url_set(param->url_handler, CURLUPART_PATH, SESSION_PATH, 0); @@ -332,45 +332,26 @@ uint8_t kds_s2000w_client_get_capabilities(response* resp) { kds_s2000w_debug_printf(ALL, "kds_s2000w_client_get_capabilities"); - 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); - curl_url_set(url_handler, CURLUPART_PATH, CAPABILITIES_PATH, 0); - curl_url_set(url_handler, CURLUPART_QUERY, CAPABILITIES_VERSION_2, 0); - curl_url_get(url_handler, CURLUPART_URL, &url, 0); - curl_easy_setopt(curl, CURLOPT_URL, url); - - struct curl_slist* headers = NULL; - headers = curl_slist_append(headers, CONTENT_TYPE_HEADER); - headers = curl_slist_append(headers, ACCEPT_JSON_HEADER); - curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); - - curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L); - _kds_s2000w_client_set_ssl_verification_off(curl); + curl_param_t* param = _kds_s2000w_client_param_init(0); + if (param == NULL) + return CURLE_OUT_OF_MEMORY; - char* errbuf = _kds_s2000w_client_errbuf_init(); - 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(curl); - CURLcode result = curl_easy_perform(curl); + curl_url_set(param->url_handler, CURLUPART_URL, client_config->scanner_url, 0); + curl_url_set(param->url_handler, CURLUPART_PATH, CAPABILITIES_PATH, 0); + curl_url_set(param->url_handler, CURLUPART_QUERY, CAPABILITIES_VERSION_2, 0); + curl_url_get(param->url_handler, CURLUPART_URL, ¶m->url, 0); + curl_easy_setopt(param->curl, CURLOPT_URL, param->url); + curl_easy_setopt(param->curl, CURLOPT_HTTPGET, 1L); + curl_easy_setopt(param->curl, CURLOPT_WRITEDATA, resp); + CURLcode result = curl_easy_perform(param->curl); _kds_s2000w_client_add_null_terminate_to_response(resp); - curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &resp->code); + curl_easy_getinfo(param->curl, CURLINFO_RESPONSE_CODE, &resp->code); - _kds_s2000w_client_print_error_status(curl); - _kds_s2000w_client_print_error_result(result, errbuf); + _kds_s2000w_client_print_error_status(param->curl); + _kds_s2000w_client_print_error_result(result, param->errbuf); - curl_url_cleanup(url_handler); - url_handler = NULL; - curl_slist_free_all(headers); - headers = NULL; - curl_easy_cleanup(curl); - curl = NULL; - curl_free(url); - url = NULL; - free(errbuf); - errbuf = NULL; + _kds_s2000w_client_param_free(param); + param = NULL; return result; }