Set bereq.http.connection:close in vcl_pipe by default

Lasse Karstensen lkarsten at
Mon Jan 27 15:07:30 CET 2014

I'm going through the documentation, and came over our handling of
"bereq.http.Connection: close" in vcl_pipe. In the builtin VCL
(previously default.vcl) there is a commented out line that the administrator
can enable if they want to only do a single request per connection.

What I'm struggling with is that we have a good amount of help requests and
tickets because of this. I think many people must set connection:close for
pipe to work as they expect. (possibly overestimated by me.)

I don't know the history here, but I don't quite understand why we don't
flip this default and save us/them the trouble?

Downside is mainly TCP slow start and extra connection setup work on
the backend.

The crazy people doing SSH-tunneling or whatever must remember to unset the
header if we do. Websocket ("bereq.http.Connection: Upgrade") handling must
be done manually anyway, so they'll figure it out.

On the upside we get (I think) less odd things to write documentation about.

No more wrong-vhost-go-away if the browser sent a subsequent request for a
different vhost that went through to the wrong backend. Fewer unecessary
backend requests because the client asked a piped session for something that
Varnish already could serve from cache. Request coalescing that works.

Tollef had some input on how this should be handled in VCL, but I thought
I'd run the main idea through the development team first.

Any takers on the history here? Why do we do it this way?
With regards,
Lasse Karstensen
Varnish Software AS

More information about the varnish-dev mailing list