multiplex: allow only once HTTP/2 is actually used

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
This commit is contained in:
Daniel Stenberg 2016-01-05 11:32:30 +01:00
parent 19ca40100b
commit 46cb70e9fa
1 changed files with 4 additions and 3 deletions

View File

@ -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;