~squid/squid/3.1

Viewing all changes in revision 10494.

  • Committer: Amos Jeffries
  • Author(s): Alex Rousskov, Raphael Hertzog
  • Date: 2015-07-30 03:51:08 UTC
  • Revision ID: squid3@treenet.co.nz-20150730035108-trkfhm8lutp4rgjp
Do not blindly forward cache peer CONNECT responses.

Squid blindly forwards cache peer CONNECT responses to clients. This
may break things if the peer responds with something like HTTP 403
(Forbidden) and keeps the connection with Squid open:
  -  The client application issues a CONNECT request.
  -  Squid forwards this request to a cache peer.
  -  Cache peer correctly responds back with a "403 Forbidden".
  -  Squid does not parse cache peer response and
     just forwards it as if it was a Squid response to the client.
  -  The TCP connections are not closed.

At this stage, Squid is unaware that the CONNECT request has failed. All
subsequent requests on the user agent TCP connection are treated as
tunnelled traffic. Squid is forwarding these requests to the peer on the
TCP connection previously used for the 403-ed CONNECT request, without
proper processing. The additional headers which should have been applied
by Squid to these requests are not applied, and the requests are being
forwarded to the cache peer even though the Squid configuration may
state that these requests must go directly to the origin server.

This fixes Squid to parse cache peer responses, and if an error response
found, respond with "502 Bad Gateway" to the client and close the
connections.


 Backport by Raphaël Hertzog based on original work by Alex Rousskov

expand all expand all

Show diffs side-by-side

added added

removed removed

Lines of Context: