Commit 46cb70e9 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

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
parent 19ca4010
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -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;