]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
setopt: allow HTTP3 when HTTP2 is not defined
authorStefan Eissing <stefan@eissing.org>
Fri, 17 Feb 2023 09:17:06 +0000 (10:17 +0100)
committerDaniel Stenberg <daniel@haxx.se>
Fri, 17 Feb 2023 15:12:24 +0000 (16:12 +0100)
Reported-by: Karthikdasari0423 on github
Fixes #10538
Closes #10544

lib/setopt.c

index b8fa1b89e6df036e6e099012a524685b5b11a2fb..604693ad94687e41a0f0523fdbf08e089aa19f70 100644 (file)
@@ -895,22 +895,38 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
      * the listed enums in curl/curl.h.
      */
     arg = va_arg(param, long);
-    if(arg < CURL_HTTP_VERSION_NONE)
-      return CURLE_BAD_FUNCTION_ARGUMENT;
+    switch(arg) {
+    case CURL_HTTP_VERSION_NONE:
+#ifdef USE_HTTP2
+      /* TODO: this seems an undesirable quirk to force a behaviour on
+       * lower implementations that they should recognize independantly? */
+      arg = CURL_HTTP_VERSION_2TLS;
+#endif
+      /* accepted */
+      break;
+    case CURL_HTTP_VERSION_1_0:
+    case CURL_HTTP_VERSION_1_1:
+      /* accepted */
+      break;
+#ifdef USE_HTTP2
+    case CURL_HTTP_VERSION_2_0:
+    case CURL_HTTP_VERSION_2TLS:
+    case CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE:
+      /* accepted */
+      break;
+#endif
 #ifdef ENABLE_QUIC
-    if(arg == CURL_HTTP_VERSION_3)
-      ;
-    else
+    case CURL_HTTP_VERSION_3:
+    case CURL_HTTP_VERSION_3ONLY:
+      /* accepted */
+      break;
 #endif
-#ifndef USE_HTTP2
-    if(arg >= CURL_HTTP_VERSION_2)
-      return CURLE_UNSUPPORTED_PROTOCOL;
-#else
-    if(arg >= CURL_HTTP_VERSION_LAST)
+    default:
+      /* not accepted */
+      if(arg < CURL_HTTP_VERSION_NONE)
+        return CURLE_BAD_FUNCTION_ARGUMENT;
       return CURLE_UNSUPPORTED_PROTOCOL;
-    if(arg == CURL_HTTP_VERSION_NONE)
-      arg = CURL_HTTP_VERSION_2TLS;
-#endif
+    }
     data->set.httpwant = (unsigned char)arg;
     break;