diff options
author | Brad King <brad.king@kitware.com> | 2024-08-15 13:35:15 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2024-08-15 13:35:37 (GMT) |
commit | 0460e71e1f592c71fbffc2035f22f91e240608a5 (patch) | |
tree | 6956d4e9824ec445f3a1716ae14fd16b25146c1c | |
parent | 41da7a4a9a6e1e5e3adaf73bce6881ec891b3e88 (diff) | |
parent | 7486f468fb982f8362252b70987aca13ddf95690 (diff) | |
download | CMake-0460e71e1f592c71fbffc2035f22f91e240608a5.zip CMake-0460e71e1f592c71fbffc2035f22f91e240608a5.tar.gz CMake-0460e71e1f592c71fbffc2035f22f91e240608a5.tar.bz2 |
Merge topic 'curl-http2'
7486f468fb curl: Avoid using HTTP/2 with curl 8.7.x due to bug in error codes
Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !9728
-rw-r--r-- | Source/CTest/cmCTestCurl.cxx | 2 | ||||
-rw-r--r-- | Source/CTest/cmCTestSubmitHandler.cxx | 2 | ||||
-rw-r--r-- | Source/cmCurl.cxx | 12 | ||||
-rw-r--r-- | Source/cmCurl.h | 2 | ||||
-rw-r--r-- | Source/cmFileCommand.cxx | 4 |
5 files changed, 18 insertions, 4 deletions
diff --git a/Source/CTest/cmCTestCurl.cxx b/Source/CTest/cmCTestCurl.cxx index b8e5db1..7137e63 100644 --- a/Source/CTest/cmCTestCurl.cxx +++ b/Source/CTest/cmCTestCurl.cxx @@ -22,7 +22,7 @@ cmCTestCurl::cmCTestCurl(cmCTest* ctest) cmCurlInitOnce(); // In windows, this will init the winsock stuff ::curl_global_init(CURL_GLOBAL_ALL); - this->Curl = curl_easy_init(); + this->Curl = cm_curl_easy_init(); } cmCTestCurl::~cmCTestCurl() diff --git a/Source/CTest/cmCTestSubmitHandler.cxx b/Source/CTest/cmCTestSubmitHandler.cxx index b0f07e5..f05b874 100644 --- a/Source/CTest/cmCTestSubmitHandler.cxx +++ b/Source/CTest/cmCTestSubmitHandler.cxx @@ -178,7 +178,7 @@ bool cmCTestSubmitHandler::SubmitUsingHTTP( cmCTestCurlOpts curlOpts(this->CTest); for (std::string const& file : files) { /* get a curl handle */ - curl = curl_easy_init(); + curl = cm_curl_easy_init(); if (curl) { cmCurlSetCAInfo(curl); if (curlOpts.TLSVersionOpt) { diff --git a/Source/cmCurl.cxx b/Source/cmCurl.cxx index 65fccd0..51b95c3 100644 --- a/Source/cmCurl.cxx +++ b/Source/cmCurl.cxx @@ -226,3 +226,15 @@ std::string cmCurlFixFileURL(std::string url) return url; } + +::CURL* cm_curl_easy_init() +{ + ::CURL* curl = curl_easy_init(); + if (curl_version_info_data* cv = curl_version_info(CURLVERSION_FIRST)) { + // curl 8.7.x returns incorrect HTTP/2 error codes. + if (cv->version_num >= 0x080700 && cv->version_num < 0x080800) { + curl_easy_setopt(curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); + } + } + return curl; +} diff --git a/Source/cmCurl.h b/Source/cmCurl.h index bb2221f..2088e3d 100644 --- a/Source/cmCurl.h +++ b/Source/cmCurl.h @@ -18,3 +18,5 @@ std::string cmCurlSetCAInfo(::CURL* curl, const std::string& cafile = {}); std::string cmCurlSetNETRCOption(::CURL* curl, const std::string& netrc_level, const std::string& netrc_file); std::string cmCurlFixFileURL(std::string url); + +::CURL* cm_curl_easy_init(); diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx index 5a12afe..926da86 100644 --- a/Source/cmFileCommand.cxx +++ b/Source/cmFileCommand.cxx @@ -2168,7 +2168,7 @@ bool HandleDownloadCommand(std::vector<std::string> const& args, ::CURL* curl; cmCurlInitOnce(); ::curl_global_init(CURL_GLOBAL_DEFAULT); - curl = ::curl_easy_init(); + curl = cm_curl_easy_init(); if (!curl) { status.SetError("DOWNLOAD error initializing curl."); return false; @@ -2542,7 +2542,7 @@ bool HandleUploadCommand(std::vector<std::string> const& args, ::CURL* curl; cmCurlInitOnce(); ::curl_global_init(CURL_GLOBAL_DEFAULT); - curl = ::curl_easy_init(); + curl = cm_curl_easy_init(); if (!curl) { status.SetError("UPLOAD error initializing curl."); fclose(fin); |