From dd31ab8f3f0e621847b4a57a2edb00a8233ecf2a Mon Sep 17 00:00:00 2001 From: Alex Rousskov Date: Wed, 9 Mar 2011 10:52:15 -0700 Subject: [PATCH] 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. --- src/adaptation/ecap/MessageRep.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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 -- 2.47.3