size_t zbx_curl_write_cb(void *ptr, size_t size, size_t nmemb, void *userdata)
size_t r_size = size * nmemb;
zbx_http_response_t *response;
response = (zbx_http_response_t*)userdata;
if (ZBX_MAX_RECV_DATA_SIZE < response->offset + r_size)
zbx_str_memcpy_alloc(&response->data, &response->allocated, &response->offset, (const char *)ptr, r_size);
size_t zbx_curl_ignore_cb(void *ptr, size_t size, size_t nmemb, void *userdata)
int zbx_http_prepare_callbacks(CURL *easyhandle, zbx_http_response_t *header, zbx_http_response_t *body,
zbx_curl_cb_t header_cb, zbx_curl_cb_t body_cb, char *errbuf, char **error)
if (CURLE_OK != (err = curl_easy_setopt(easyhandle, CURLOPT_HEADERFUNCTION, header_cb)))
*error = zbx_dsprintf(*error, "Cannot set header function: %s", curl_easy_strerror(err));
if (CURLE_OK != (err = curl_easy_setopt(easyhandle, CURLOPT_HEADERDATA, header)))
*error = zbx_dsprintf(*error, "Cannot set header callback: %s", curl_easy_strerror(err));
if (CURLE_OK != (err = curl_easy_setopt(easyhandle, CURLOPT_WRITEFUNCTION, body_cb)))
*error = zbx_dsprintf(*error, "Cannot set write function: %s", curl_easy_strerror(err));
if (CURLE_OK != (err = curl_easy_setopt(easyhandle, CURLOPT_WRITEDATA, body)))
*error = zbx_dsprintf(*error, "Cannot set write callback: %s", curl_easy_strerror(err));
if (CURLE_OK != (err = curl_easy_setopt(easyhandle, CURLOPT_ERRORBUFFER, errbuf)))
*error = zbx_dsprintf(*error, "Cannot set error buffer: %s", curl_easy_strerror(err));
int zbx_http_prepare_ssl(CURL *easyhandle, const char *ssl_cert_file, const char *ssl_key_file,
const char *ssl_key_password, unsigned char verify_peer, unsigned char verify_host,
const char *config_source_ip, const char *config_ssl_ca_location, const char *config_ssl_cert_location,