瀏覽代碼

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 <[email protected]>
Acked-by: buildbot <[email protected]>
Merge-request: !9728
Brad King 1 年之前
父節點
當前提交
0460e71e1f
共有 5 個文件被更改,包括 18 次插入4 次删除
  1. 1 1
      Source/CTest/cmCTestCurl.cxx
  2. 1 1
      Source/CTest/cmCTestSubmitHandler.cxx
  3. 12 0
      Source/cmCurl.cxx
  4. 2 0
      Source/cmCurl.h
  5. 2 2
      Source/cmFileCommand.cxx

+ 1 - 1
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()

+ 1 - 1
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) {

+ 12 - 0
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;
+}

+ 2 - 0
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();

+ 2 - 2
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);