From 31c3af7410e7dea2be8f1a1e1214c78f5cf65be9 Mon Sep 17 00:00:00 2001 From: Amos Jeffries Date: Wed, 29 Sep 2010 22:45:16 -0600 Subject: [PATCH] Bug 3023: url_rewrite_program silently fails to rewrite on broken URLs Produce loud cache.log entries displayig the URL instead of silently bypassing. --- src/client_side_request.cc | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/client_side_request.cc b/src/client_side_request.cc index aae5a4d78c..88831270f0 100644 --- a/src/client_side_request.cc +++ b/src/client_side_request.cc @@ -1009,11 +1009,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) { -- 2.47.3