[PATCH] HTTP/2.0 initial support

From: Amos Jeffries <squid3_at_treenet.co.nz>
Date: Fri, 02 Aug 2013 22:30:43 +1200

This patch lays the groundwork for HTTP/2.0 support in Squid:

* registers PRI method for detection of the HTTP/2.0 "magic" connection
header when expecting HTTP/1.1 traffic

* extend the request line HTTP-version's accepted by the parser to
include "HTTP/2.0".

* reject 2.0 traffic received by reverse- or forward-proxy ports and log
"error:http-2.0-not-supported" in access.log.

* reject "HTTP/2.0" version label or "PRI" method in any use other than
a complete HTTP/2.0 magic connection header.

* change delivered error page to the "Method Not Allowed" response,
indicating the PRI magic "method" is rejected by this HTTP/1.1 proxy.

* intercepted HTTP/2.0 traffic is relayed to ORIGINAL_DST or a
cache_peer transparently.

Note that HTTP/2.0 traffic relaying can be prevented by defining an ACL
for method PRI and limited by http_access controls in the same way as
method CONNECT. cache_peer_access selection can also make use of the PRI
method in ACLs to control tunneling to peers.

Also, fix bug 3371 (CONNECT payload data sent in the first packet being
dropped by Squid) as a necessary step towards relaying the HTTP/2.0
frames which are expected to be pushed in by the client immediately
after the HTTP/2.0 magic header.

Also, add URL parsing and generation support for "*" URL in
request-lines of PRI, OPTIONS and TRACE methods. This is only updating
the URL internal code for OPTIONS and TRACE, the remainder of support
necessary to cope with that URL special case according to HTTP/1.1
requirements is still missing and outside the scope of this patch.

Amos

Received on Fri Aug 02 2013 - 10:30:51 MDT

This archive was generated by hypermail 2.2.0 : Thu Aug 22 2013 - 12:00:18 MDT