]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Give full Request-URI to eCAP adapters.
authorAlex Rousskov <rousskov@measurement-factory.com>
Wed, 9 Mar 2011 17:52:15 +0000 (10:52 -0700)
committerAlex Rousskov <rousskov@measurement-factory.com>
Wed, 9 Mar 2011 17:52:15 +0000 (10:52 -0700)
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

index 19a6e58a70f7ad716ea9c6decea4a764a71a6d6b..f82b1463ffd62bf3719d9e645acd09731ed898fe 100644 (file)
@@ -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