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.
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