@@ -152,11 +152,19 @@ void LibcurlHttpFetcher::SetCurlOptionsForHttp() {
152
152
if (!auth_user_.empty ()) {
153
153
LOG (INFO) << " (This is not HTTPS, ignoring HTTP Auth credentials)" ;
154
154
}
155
+ #if (LIBCURL_VERSION_MAJOR > 7) || ((LIBCURL_VERSION_MAJOR == 7) && (LIBCURL_VERSION_MINOR >= 85))
156
+ CHECK_EQ (curl_easy_setopt (curl_handle_, CURLOPT_PROTOCOLS_STR, " http" ),
157
+ CURLE_OK);
158
+ CHECK_EQ (curl_easy_setopt (curl_handle_, CURLOPT_REDIR_PROTOCOLS_STR,
159
+ " http" ),
160
+ CURLE_OK);
161
+ #else
155
162
CHECK_EQ (curl_easy_setopt (curl_handle_, CURLOPT_PROTOCOLS, CURLPROTO_HTTP),
156
163
CURLE_OK);
157
164
CHECK_EQ (curl_easy_setopt (curl_handle_, CURLOPT_REDIR_PROTOCOLS,
158
165
CURLPROTO_HTTP),
159
166
CURLE_OK);
167
+ #endif
160
168
}
161
169
162
170
// Security lock-down in official builds: makes sure that peer certificate
@@ -168,11 +176,19 @@ void LibcurlHttpFetcher::SetCurlOptionsForHttps() {
168
176
CURLE_OK);
169
177
CHECK_EQ (curl_easy_setopt (curl_handle_, CURLOPT_CAPATH, kCACertificatesPath ),
170
178
CURLE_OK);
179
+ #if (LIBCURL_VERSION_MAJOR > 7) || ((LIBCURL_VERSION_MAJOR == 7) && (LIBCURL_VERSION_MINOR >= 85))
180
+ CHECK_EQ (curl_easy_setopt (curl_handle_, CURLOPT_PROTOCOLS_STR, " https" ),
181
+ CURLE_OK);
182
+ CHECK_EQ (curl_easy_setopt (curl_handle_, CURLOPT_REDIR_PROTOCOLS_STR,
183
+ " https" ),
184
+ CURLE_OK);
185
+ #else
171
186
CHECK_EQ (curl_easy_setopt (curl_handle_, CURLOPT_PROTOCOLS, CURLPROTO_HTTPS),
172
187
CURLE_OK);
173
188
CHECK_EQ (curl_easy_setopt (curl_handle_, CURLOPT_REDIR_PROTOCOLS,
174
189
CURLPROTO_HTTPS),
175
190
CURLE_OK);
191
+ #endif
176
192
CHECK_EQ (curl_easy_setopt (curl_handle_, CURLOPT_SSL_CIPHER_LIST, " HIGH:!ADH" ),
177
193
CURLE_OK);
178
194
CHECK_EQ (curl_easy_setopt (curl_handle_, CURLOPT_SSLVERSION,
@@ -328,13 +344,12 @@ size_t LibcurlHttpFetcher::LibcurlWrite(void *ptr, size_t size, size_t nmemb) {
328
344
329
345
sent_byte_ = true ;
330
346
{
331
- double transfer_size_double ;
347
+ curl_off_t download_transfer_size ;
332
348
CHECK_EQ (curl_easy_getinfo (curl_handle_,
333
- CURLINFO_CONTENT_LENGTH_DOWNLOAD,
334
- &transfer_size_double), CURLE_OK);
335
- off_t new_transfer_size = static_cast <off_t >(transfer_size_double);
336
- if (new_transfer_size > 0 ) {
337
- transfer_size_ = resume_offset_ + new_transfer_size;
349
+ CURLINFO_CONTENT_LENGTH_DOWNLOAD_T,
350
+ &download_transfer_size), CURLE_OK);
351
+ if (download_transfer_size > 0 ) {
352
+ transfer_size_ = resume_offset_ + download_transfer_size;
338
353
}
339
354
}
340
355
bytes_downloaded_ += payload_size;
0 commit comments