28

When I do a curl -v to some docker container that I created, I get:

* Mark bundle as not supporting multiuse

What does it mean? Where is it documented?

Martijn Burger
  • 395
  • 1
  • 4
  • 9

2 Answers2

25

From https://github.com/curl/curl/blob/curl-7_82_0/lib/http.c#L4226 :

if(conn->httpversion < 20) {
   conn->bundle->multiuse = BUNDLE_NO_MULTIUSE;
   infof(data, "Mark bundle as not supporting multiuse\n");
}

It is a feature of HTTP/2. See, e.g., https://www.cloudflare.com/website-optimization/http2/what-is-http2/

Joja
  • 103
  • 3
Mark Wagner
  • 17,764
  • 2
  • 30
  • 47
  • 6
    Is that like a Microsoft 'feature'? The explanation provided is useless, and the documentation only puts this as #24 on a list of error messages with no explanation of where it comes from. Neophytes in cURL or whatever command brings up "Mark bundle as not supporting multiuse" will find no help here so far... – user648678 Apr 29 '21 at 06:24
  • 1
    I completely agree. This answer is useless. Especially the generic link to what http2 is without any further information is really not useful. – Dolf Andringa Mar 02 '22 at 06:57
  • "Oops, you appear to be lost" – Yates Sep 07 '22 at 15:23
2

If I understand correctly, multiuse == multiplexing? If so, then this explanation is fine.

Multiplexing is perhaps the most significant benefit of HTTP/2. HTTP/1.1 requires each request to use its own TCP connection. Multiplexing, in contrast, allows a browser to include multiple requests in a single TCP connection.

Multiplexing Diagram 1

The problem is, a browser can only have a limited number of TCP connections open at any given time. For HTTP/1.1, this means a browser can only load a single resource at a time—every asset in a web page is sent back to the browser sequentially. Multiplexing allows a browser to request all these assets in parallel. This results in a dramatic performance gain.

Multiplexing Diagram 2

HTTP/1.1 is sort of like buying a single item at a grocery store, taking it back home, going back to the store for the next item you need, and repeating until your pantry is fully stocked. Multiplexing gives you a shopping cart so you can pick up everything you need in one trip.

del13r
  • 29
  • 1
  • 1
    Can you check your posting? I think you typed `HTTP/1.1` where you did mean `HTTP/2` in the last paragraph? – Luuk Mar 30 '22 at 06:46
  • I copy/pasted the explanation word for word from https://www.cloudflare.com/en-in/website-optimization/http2/what-is-http2/ – del13r Apr 27 '22 at 10:03
  • The link is dead. In trying to find something similar, I found the following. https://blog.cloudflare.com/http-2-for-web-developers I see that the first diagram that is linked above shows up in this article. – Phil Freihofner Sep 08 '22 at 03:28