80 std::string d_cookies_filename;
81 std::string d_hyrax_user_agent;
82 unsigned long d_max_redirects = 3;
83 std::string d_netrc_file;
85 CURLSH *d_share =
nullptr;
87 static std::recursive_mutex d_share_mutex;
89 static std::recursive_mutex d_cookie_mutex;
90 static std::recursive_mutex d_dns_mutex;
91 static std::recursive_mutex d_ssl_session_mutex;
92 static std::recursive_mutex d_connect_mutex;
94 static std::recursive_mutex d_mutex;
96 static void lock_cb(CURL *, curl_lock_data data, curl_lock_access ,
void *) {
98 case CURL_LOCK_DATA_SHARE:
102 case CURL_LOCK_DATA_COOKIE:
103 d_cookie_mutex.lock();
106 case CURL_LOCK_DATA_DNS:
109 case CURL_LOCK_DATA_SSL_SESSION:
110 d_ssl_session_mutex.lock();
112 case CURL_LOCK_DATA_CONNECT:
113 d_connect_mutex.lock();
121 static void unlock_cb(CURL *, curl_lock_data data,
void * ) {
123 case CURL_LOCK_DATA_SHARE:
124 d_share_mutex.unlock();
127 case CURL_LOCK_DATA_COOKIE:
128 d_cookie_mutex.unlock();
131 case CURL_LOCK_DATA_DNS:
132 d_dns_mutex.unlock();
134 case CURL_LOCK_DATA_SSL_SESSION:
135 d_ssl_session_mutex.unlock();
137 case CURL_LOCK_DATA_CONNECT:
138 d_connect_mutex.unlock();
147 CurlHandlePool() =
default;