diff --git a/swift/common/middleware/proxy_logging.py b/swift/common/middleware/proxy_logging.py index 691b8488a2..461c4a8b5d 100644 --- a/swift/common/middleware/proxy_logging.py +++ b/swift/common/middleware/proxy_logging.py @@ -117,7 +117,7 @@ class ProxyLoggingMiddleware(object): req = Request(env) if client_disconnect: # log disconnected clients as '499' status code status_int = 499 - req_path = get_valid_utf8_str(env.get('PATH_INFO', '')) + req_path = get_valid_utf8_str(req.path) the_request = quote(unquote(req_path)) if req.query_string: the_request = the_request + '?' + req.query_string diff --git a/test/unit/common/middleware/test_proxy_logging.py b/test/unit/common/middleware/test_proxy_logging.py index 5508ec454b..7b68a20d10 100644 --- a/test/unit/common/middleware/test_proxy_logging.py +++ b/test/unit/common/middleware/test_proxy_logging.py @@ -245,6 +245,22 @@ class TestProxyLogging(unittest.TestCase): resp = app(req.environ, start_response) body = ''.join(resp) + def test_req_path_info_popping(self): + app = proxy_logging.ProxyLoggingMiddleware(FakeApp(), {}) + app.access_logger = FakeLogger() + req = Request.blank('/v1/something', environ={'REQUEST_METHOD': 'GET'}) + req.path_info_pop() + self.assertEquals(req.environ['PATH_INFO'], '/something') + resp = app(req.environ, start_response) + resp_body = ''.join(resp) + log_parts = app.access_logger.msg.split() + self.assertEquals(log_parts[3], 'GET') + self.assertEquals(log_parts[4], '/v1/something') + self.assertEquals(log_parts[5], 'HTTP/1.0') + self.assertEquals(log_parts[6], '200') + self.assertEquals(resp_body, 'FAKE APP') + self.assertEquals(log_parts[11], str(len(resp_body))) + if __name__ == '__main__': unittest.main()