]> granicus.if.org Git - curl/commitdiff
multiplex: allow only once HTTP/2 is actually used
authorDaniel Stenberg <daniel@haxx.se>
Tue, 5 Jan 2016 10:32:30 +0000 (11:32 +0100)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 5 Jan 2016 23:54:49 +0000 (00:54 +0100)
To make sure curl doesn't allow multiplexing before a connection is
upgraded to HTTP/2 (like when Upgrade: h2c fails), we must make sure the
connection uses HTTP/2 as well and not only check what's wanted.

Closes #584

Patch-by: c0ff
lib/url.c

index be2f2f896e7d795894f5803039c8c0416d76a85b..875cb8b2068d5f01480212262bf2b6e6722ba79f 100644 (file)
--- a/lib/url.c
+++ b/lib/url.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -2865,8 +2865,9 @@ static bool IsPipeliningPossible(const struct SessionHandle *handle,
       return TRUE;
 
     if(Curl_pipeline_wanted(handle->multi, CURLPIPE_MULTIPLEX) &&
-       (handle->set.httpversion >= CURL_HTTP_VERSION_2))
-      /* allows HTTP/2 */
+       (handle->set.httpversion >= CURL_HTTP_VERSION_2) &&
+       (conn->httpversion >= 20))
+      /* allows and uses HTTP/2 */
       return TRUE;
   }
   return FALSE;