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

Reply via email to