#define CONFIGURATION_PATH "/api/session/configuration"
CURL* curl = NULL;
-char* errbuf = NULL;
typedef struct {
char* scanner_url;
kds_s2000w_debug_printf(ERROR, header->value);
}
-void _kds_s2000w_client_print_error_result(CURLcode result)
+void _kds_s2000w_client_print_error_result(const CURLcode result, const char* errbuf)
{
if (result == CURLE_OK)
return;
size_t len = strlen(errbuf);
if (len > 0) {
kds_s2000w_debug_printf(ERROR, errbuf);
- memset(errbuf, 0, CURL_ERROR_SIZE);
return;
}
client_config.heartbeat = heartbeat;
}
+char* _kds_s2000w_client_errbuf_init()
+{
+ char* errbuf = malloc(sizeof(char) * CURL_ERROR_SIZE);
+ if (errbuf == NULL)
+ return NULL;
+
+ memset(errbuf, 0, CURL_ERROR_SIZE);
+ return errbuf;
+}
+
void kds_s2000w_client_init(const char* scanner_url, const char* username, bool ssl_verify, uint8_t heartbeat)
{
kds_s2000w_debug_printf(ALL, "kds_s2000w_client_init");
_kds_s2000w_client_set_config(scanner_url, username, ssl_verify, heartbeat);
curl_global_init(CURL_GLOBAL_ALL);
curl = curl_easy_init();
- errbuf = malloc(CURL_ERROR_SIZE);
- if (errbuf == NULL)
- return;
-
- memset(errbuf, 0, CURL_ERROR_SIZE);
}
void kds_s2000w_client_free()
curl_easy_cleanup(curl);
curl = NULL;
curl_global_cleanup();
- free(errbuf);
- errbuf = NULL;
}
response* kds_s2000w_client_response_init()
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, body);
_kds_s2000w_client_set_ssl_verification_off(curl);
+ 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);
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &resp->code);
_kds_s2000w_client_print_error_status(curl);
- _kds_s2000w_client_print_error_result(result);
+ _kds_s2000w_client_print_error_result(result, errbuf);
curl_url_cleanup(url_handler);
url_handler = NULL;
body = NULL;
curl_free(url);
url = NULL;
+ free(errbuf);
+ errbuf = NULL;
return result;
}
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, HTTP_DELETE);
_kds_s2000w_client_set_ssl_verification_off(curl);
+ char* errbuf = _kds_s2000w_client_errbuf_init();
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errbuf);
_kds_s2000w_client_set_verbose();
CURLcode result = curl_easy_perform(curl);
- _kds_s2000w_client_print_error_result(result);
+ _kds_s2000w_client_print_error_result(result, errbuf);
curl_url_cleanup(url_handler);
url_handler = NULL;
headers = NULL;
free(header_str);
header_str = NULL;
+ free(errbuf);
+ errbuf = NULL;
}
uint8_t kds_s2000w_client_get_capabilities(response* resp)
curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L);
_kds_s2000w_client_set_ssl_verification_off(curl);
+ 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);
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &resp->code);
_kds_s2000w_client_print_error_status(curl);
- _kds_s2000w_client_print_error_result(result);
+ _kds_s2000w_client_print_error_result(result, errbuf);
curl_url_cleanup(url_handler);
url_handler = NULL;
headers = NULL;
curl_free(url);
url = NULL;
+ free(errbuf);
+ errbuf = NULL;
return result;
}
curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L);
_kds_s2000w_client_set_ssl_verification_off(curl);
+ 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);
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &resp->code);
_kds_s2000w_client_print_error_status(curl);
- _kds_s2000w_client_print_error_result(result);
+ _kds_s2000w_client_print_error_result(result, errbuf);
curl_url_cleanup(url_handler);
url_handler = NULL;
url = NULL;
free(header_str);
header_str = NULL;
+ free(errbuf);
+ errbuf = NULL;
return result;
}
curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, 0L);
_kds_s2000w_client_set_ssl_verification_off(curl);
+ char* errbuf = _kds_s2000w_client_errbuf_init();
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errbuf);
_kds_s2000w_client_set_verbose();
CURLcode result = curl_easy_perform(curl);
_kds_s2000w_client_print_error_status(curl);
- _kds_s2000w_client_print_error_result(result);
+ _kds_s2000w_client_print_error_result(result, errbuf);
curl_url_cleanup(url_handler);
url_handler = NULL;
url = NULL;
free(header_str);
header_str = NULL;
+ free(errbuf);
+ errbuf = NULL;
return result;
}
curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, 0L);
_kds_s2000w_client_set_ssl_verification_off(curl);
+ char* errbuf = _kds_s2000w_client_errbuf_init();
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errbuf);
_kds_s2000w_client_set_verbose();
CURLcode result = curl_easy_perform(curl);
_kds_s2000w_client_print_error_status(curl);
- _kds_s2000w_client_print_error_result(result);
+ _kds_s2000w_client_print_error_result(result, errbuf);
curl_url_cleanup(url_handler);
url_handler = NULL;
url = NULL;
free(header_str);
header_str = NULL;
+ free(errbuf);
+ errbuf = NULL;
return result;
}
curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L);
_kds_s2000w_client_set_ssl_verification_off(curl);
+ 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);
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &resp->code);
_kds_s2000w_client_print_error_status(curl);
- _kds_s2000w_client_print_error_result(result);
+ _kds_s2000w_client_print_error_result(result, errbuf);
curl_url_cleanup(url_handler);
url_handler = NULL;
url_path = NULL;
free(header_str);
header_str = NULL;
+ free(errbuf);
+ errbuf = NULL;
return result;
}
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, HTTP_DELETE);
_kds_s2000w_client_set_ssl_verification_off(curl);
+ char* errbuf = _kds_s2000w_client_errbuf_init();
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errbuf);
_kds_s2000w_client_set_verbose();
CURLcode result = curl_easy_perform(curl);
_kds_s2000w_client_print_error_status(curl);
- _kds_s2000w_client_print_error_result(result);
+ _kds_s2000w_client_print_error_result(result, errbuf);
curl_url_cleanup(url_handler);
url_handler = NULL;
url = NULL;
free(header_str);
header_str = NULL;
+ free(errbuf);
+ errbuf = NULL;
return result;
}
curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L);
_kds_s2000w_client_set_ssl_verification_off(curl);
+ 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);
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &resp->code);
_kds_s2000w_client_print_error_status(curl);
- _kds_s2000w_client_print_error_result(result);
+ _kds_s2000w_client_print_error_result(result, errbuf);
curl_url_cleanup(url_handler);
url_handler = NULL;
url = NULL;
free(header_str);
header_str = NULL;
+ free(errbuf);
+ errbuf = NULL;
return result;
}
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, HTTP_PUT);
_kds_s2000w_client_set_ssl_verification_off(curl);
+ char* errbuf = _kds_s2000w_client_errbuf_init();
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errbuf);
_kds_s2000w_client_set_verbose();
CURLcode result = curl_easy_perform(curl);
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &resp->code);
_kds_s2000w_client_print_error_status(curl);
- _kds_s2000w_client_print_error_result(result);
+ _kds_s2000w_client_print_error_result(result, errbuf);
curl_url_cleanup(url_handler);
url_handler = NULL;
url = NULL;
free(header_str);
header_str = NULL;
+ free(errbuf);
+ errbuf = NULL;
return result;
}
\ No newline at end of file