> I’ve never used Squid until last week. Squid 4.11 has been set as a
> proxy server for my mtk demo board connecting to the internet.
> Recently, when I tried to run CTS on a demo board, few network test
> cases failed. After tcpdumping and investigating with wireshark, it
> seems that the following happens ,
> 1. demo board performs a 'GET' in HTTP 1.0 to the proxy
> 2. the proxy then performs this GET to the server, but now it's in HTTP 1.1
> 3. the server replies in HTTP 1.1 to proxy
This is correct HTTP behaviour as far as the details you have provided show.
> 4. the proxy replies in HTTP 1.1 to the demo board which *expects
> response in HTTP 1.0*
That is broken. It should be expecting a response in HTTP/1.*
The client is telling Squid that it can only support feature level 0. So
responses from Squid can only use *features* compatible with level-0.
Squid is telling the client it supports feature level 1. So the client
can actually *use* features from 1.1 (if it wants/needs to) in its
messages labeled "HTTP/1.0".
When an HTTP/1.1 message is sent to an HTTP/1.0 recipient [RFC1945]
or a recipient whose version is unknown, the HTTP/1.1 message is
constructed such that it can be interpreted as a valid HTTP/1.0
message if all of the newer features are ignored.
Intermediaries that process HTTP messages (i.e., all intermediaries
other than those acting as tunnels) MUST send their own HTTP-version
in forwarded messages.