From: Alex Rousskov Date: Sun, 3 Apr 2011 11:05:39 +0000 (-0600) Subject: Give full Request-URI to eCAP adapters. X-Git-Tag: SQUID_3_1_12~9 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7f76c17208642816d619bab722dac388a3e905a5;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 8acf3798ed..18024a61c9 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