On 01/14/2010 03:28 PM, Tsantilas Christos wrote: > Amos Jeffries wrote: >> Tsantilas Christos wrote: >>>> Tsantilas Christos wrote: >>>>> Hi all, >>>>> This patch adds a new format code which allow the user to log HTTP >>>>> request header or header fields before they are adapted. >>>>> The existing "http::>h" format code logs HTTP request headers after >>>>> adaptation. >>>>> The new format code is the "http::>hv". >>>>> >>>>> This is a Measurement Factory project. >>>>> >>>>> Regards, >>>>> Christos >>>>> >>>> Um, I would think this makes more sense done the other way around. >>>> >>>> With the default >h displaying the virgin headers received from the >>>> client and some other code ( >ha ?) for the adapted headers. Be it >>>> adaptation or headers_access doing the alteration. >>> >>> The only objection I have is that the >h is already implemented to log >>> headers after adaptation for squid3.0 and squid3.1 >> >> I know. However its documented as merely "request header" with >> indication that it's adapted first. It's historic from squid-2 where >> no adaptation happened to them. So IMO the fact that it displays the >> adapted header is kind of a regression. >> >>> >>> I did not have in my mind the headers_access, so in the patch the new >>> format code activated only if the adaptation is active. >>> Should the http::>hv (or http::>ha) be always active? >> >> Yes. IMO always active. > > At the end this is not so simple. > When we are doing adaptation we are replacing the old HttpRequest object > with a new one. Logging virgin and adapted HttpRequest is simple and > does not have a Huge cost, just do not release the virgin HttpRequest > object. > > But the header_access just removes the requested headers from the virgin > HttpRequest object. Requires a different approach. Maybe just make a > clone of the HttpRequest is enough, but does it worth the extra cost?
Can we clone once, before header_access and before adaptations? That cloned pristine value is what should be logged with one of the >h* options. The header value used for the final request to the server should be used for the other >h* option. Personally, I do not care which >h* option is the default. All we need to do is to provide a way to log from-the-client and to-the-server HTTP request headers. Thank you, Alex.
