pipe mode and sendfile?

Dridi Boukelmoune dridi at varni.sh
Tue Mar 29 15:49:38 CEST 2016


> We don't know how arbitrary FOO-over-H2 streams will compress and
> have no intention of learning about it.

I don't know about other FOOs but for WebSocket for instance, AFAIK it
doesn't look possible, so I doubt we could *really* pipe anything
besides CONNECT tunnels and H2 streams (and only pretend we are
piping the latter).

> It's bad enough to pipe half the HTTP streams to one backend and
> the other half to the other.  Think for instance about how we would
> merge the two backend->client HPACK state into one.

You're not supposed to do that, HPACK is maintained as a one-way
compression between two parties and cannot be shared with
third-parties. So I'm afraid we can't share HPACK tables with
backends, but fortunately that makes the pipe thing a non problem
wrt HPACK.

When the session sees HEADER frames it does the HPACK lookups/updates
before it handing them to streams.

> So unless somebody volunteers to write that code *and* gets it past
> my review, "pipe" in 5.0 is per connection only...

We need CONNECT piping to comply with the RFC, and as I said in
previous comments, I believe that's the only kind of "true" pipe we
can do in H2, and it's stream-based.

Or we can choose to close all streams that do a pipe transition, I
believe it can be done too.

Dridi



More information about the varnish-dev mailing list