cURL / Mailing Lists / curl-library / Single Mail

curl-library

Re: Remove HTTP Pipelining support?

From: m brandenberg <mcbinc_at_panix.com>
Date: Wed, 13 Apr 2016 00:42:17 -0400 (EDT)

On Fri, 8 Apr 2016, Daniel Stenberg wrote:

> I'd like to open this discussion. If you use HTTP Pipelining in your
> application I'd be very interested to know how you'd view a future without
> support for it in libcurl.

So some status first... We have multi-million seats using pipelining
for some of our data transport and it does contribute positively to most
users' experiences. You can read a brief overview of our motivations
and results here:

https://community.secondlife.com/t5/Tools-and-Technology/The-Sky-Over-Berlin-and-Elsewhere/ba-p/2844452

We define both endpoints where pipelining is used which limits our
exposure to infrastructure problems that general purpose HTTP tools,
like browsers, are subject to. But there are still problems, mainly
in low-quality wireless endpoint devices and in invasive firewall
and anti-virus tools.

Despite having 15 years to get this right, some of these have major
flaws with full HTTP 1.1 conformance generally and pipelining
specifically. In a few cases, we see protocol corruption. The
exact cause isn't known but I suspect poor design for concurrency
is a major factor.

That's why while I'm hopeful for HTTP/2, I also anticipate a great deal
of frustration ahead. It enables concurrency 'breadthwise' via
multiplexing rather than 'depthwise' in pipelining but to such devices
and software, it's still just concurrency. And that will fall into
the same design failures that pipelining does now. At present, HTTP/2
is new enough that I'd expect these tools to simply bypass the protocol
for now. But as time goes on, they'll update features, start handling
the traffic, and then get a demonstration of their problems.

As to what I'd like to see... There are quite a few bugs in the
pipelining support in libcurl. Carlo Wood had the beginnings of some
nice fixes centered around cleanup of the state machine. I'd like
to see something like that or maybe simplified pipelining support
that parallels what's been done to support HTTP/2 (though I haven't
looked at this yet - I'm making assumptions).

And I wish I had a diff to offer you tonight...

m

--
Monty Brandenberg
-------------------------------------------------------------------
List admin: https://cool.haxx.se/list/listinfo/curl-library
Etiquette:  https://curl.haxx.se/mail/etiquette.html
Received on 2016-04-13