From: Alex Rousskov Date: Wed, 9 Mar 2011 17:52:15 +0000 (-0700) Subject: Give full Request-URI to eCAP adapters. X-Git-Tag: take06~27^2~109 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dd31ab8f3f0e621847b4a57a2edb00a8233ecf2a;p=thirdparty%2Fsquid.git Give full Request-URI to eCAP adapters. Implement libecap::RequestLine::uri() to return full Request-URI instead of URL path. Niether full URL nor URL path is perfect because the actual request may have full URI or a path, but Squid does not really keep that information. This change makes our eCAP implementation consistent with our ICAP implementation. Eventually, eCAP may have an API that is guaranteed to return full Request-URI and Squid may remember what kind of URI it got in the virgin request, allowing for a more truthful implementation. --- diff --git a/src/adaptation/ecap/MessageRep.cc b/src/adaptation/ecap/MessageRep.cc index 19a6e58a70..f82b1463ff 100644 --- a/src/adaptation/ecap/MessageRep.cc +++ b/src/adaptation/ecap/MessageRep.cc @@ -199,8 +199,10 @@ Adaptation::Ecap::RequestLineRep::uri(const Area &aUri) Adaptation::Ecap::RequestLineRep::Area Adaptation::Ecap::RequestLineRep::uri() const { - return Area::FromTempBuffer(theMessage.urlpath.rawBuf(), - theMessage.urlpath.size()); + const char *fullUrl = urlCanonical(&theMessage); + Must(fullUrl); + // optimize: avoid copying by having an Area::Detail that locks theMessage + return Area::FromTempBuffer(fullUrl, strlen(fullUrl)); } void