From: Amos Jeffries Date: Tue, 21 Sep 2010 12:11:37 +0000 (+1200) Subject: Bug 3023: url_rewrite_program silently fails to rewrite on broken URLs X-Git-Tag: take1~240 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e5b677f0d727f62d96271d24aef0ac4527378db8;p=thirdparty%2Fsquid.git Bug 3023: url_rewrite_program silently fails to rewrite on broken URLs Produce loud cache.log entries displayig the URL instead of silently bypassing. --- diff --git a/src/client_side_request.cc b/src/client_side_request.cc index 51130e9da0..034c271273 100644 --- a/src/client_side_request.cc +++ b/src/client_side_request.cc @@ -1019,11 +1019,18 @@ ClientRequestContext::clientRedirectDone(char *result) if ((t = strchr(result, ':')) != NULL) { http->redirect.status = status; http->redirect.location = xstrdup(t + 1); + // TODO: validate the URL produced here is RFC 2616 compliant absolute URI } else { - debugs(85, 1, "clientRedirectDone: bad input: " << result); + if (old_request->http_ver < HttpVersion(1,1)) + debugs(85, DBG_CRITICAL, "ERROR: URL-rewrite produces invalid 302 redirect Location: " << result); + else + debugs(85, DBG_CRITICAL, "ERROR: URL-rewrite produces invalid 303 redirect Location: " << result); } - } else if (strcmp(result, http->uri)) - new_request = HttpRequest::CreateFromUrlAndMethod(result, old_request->method); + } else if (strcmp(result, http->uri)) { + if (!(new_request = HttpRequest::CreateFromUrlAndMethod(result, old_request->method))) + debugs(85, DBG_CRITICAL, "ERROR: URL-rewrite produces invalid request: " << + old_request->method << " " << result << " HTTP/1.1"); + } } if (new_request) {