curl / Mailing Lists / curl-library / Single Mail

curl-library

Re: http2 stream dependency observation

From: Daniel Stenberg via curl-library <curl-library_at_cool.haxx.se>
Date: Thu, 21 Mar 2019 15:18:51 +0100 (CET)

On Wed, 20 Mar 2019, Kunal Ekawde wrote:

> Then in case of HTTP/1.1 transfer, we want to have
> CURLMOPT_MAX_TOTAL_CONNECTIONS = 1000, CURLMOPT_MAX_HOST_CONNECTIONS = 100.
> If we run the HTTP/2 transfer with these set, libcurl opens a new connection
> instead of multiplexing the next stream over earlier connection

As I've explained to Arnaud, it is not that simple and this statement is
simply wrong or at best incomplete.

When libcurl starts a new transfer and you let it do HTTP/2, it *will* reuse
existing HTTP/2 connections and multiplex over that - if one is available at
the time and it has room for a new stream.

If it doesn't have any existing HTTP/2 to add itself to, it will create a new
connection instead *unless* you have PIPEWAIT set for it as then it will wait
for other connections to the same host to first check if those can be
multiplexed over and then it can use that connection instead.

So, it all depends. libcurl is not designed to maximize multiplexing, it is
made to perform the transfers you ask it to perform - when you ask it.

> Even with normal dependency (not as in case#1) wherein for 3 requests(stream
> 1, 3, 5) -- 3(weight 20) depends on 1, 5(weight=80) depends on 1, the server
> is not showing consistent behavior of processing the requests.

...

> The HEADER frame seems to send the dependency properly, but later PRIORITY
> is sent for same stream id but the dependency is 0.

A bug?

-- 
  / daniel.haxx.se
-------------------------------------------------------------------
Unsubscribe: https://cool.haxx.se/list/listinfo/curl-library
Etiquette:   https://curl.haxx.se/mail/etiquette.html
Received on 2019-03-21