Hi Squid developers,
There is a bug in Squid when using %>ru log format code for relatively large URLs of size between MAX_URL=8K and 64K. In this case, a dash "-" is logged, whereas another, similar %ru logs the URL (or its prefix), as expected. We found a solution for this bug, introducing a new AccessLogEntry virgin URL field, and using it inside Format::assemble() for LFT_CLIENT_REQ_URI (when request is nil). However, this solution itself is insufficient: with it, in %>ru Squid logs large and small URLs differently. For example, Squid strips whitespaces from small URLs, while keeping them for large ones. We considered two possible solutions: 1. Adjust urlParse() to process large URLs (instead of returning when noticing an URL exceeds MAX_URL). This solution can be problematic, because the parsed URL can even exceed 64K limit (e.g., after applying rfc1738_unescape()). 2. Adjust Http::One::RequestParser::parseRequestFirstLine(), immediately rejecting requests with URLs exceeding MAX_URL (use it instead of Config.maxRequestHeaderSize). As a result, access.log would get "error:request-too-large" for such requests. This solution looks better, since anyway, Squid eventually denies such requests and, moreover, there are many contexts in Squid tied up to that MAX_URL limitation. So, the question is: can we go on with (2) without breaking something? Or probably there are any other(better) alternative approaches? Thank you, Eduard. _______________________________________________ squid-dev mailing list squid-dev@lists.squid-cache.org http://lists.squid-cache.org/listinfo/squid-dev