From a8132f4074aad00a04f8927d8fce34d5a68b0d0e Mon Sep 17 00:00:00 2001 From: Arthur Neves Date: Sun, 9 Feb 2014 22:00:47 -0500 Subject: [PATCH] unescape path on commonlogger --- lib/rack/commonlogger.rb | 2 +- test/spec_commonlogger.rb | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/rack/commonlogger.rb b/lib/rack/commonlogger.rb index 1c99045e9..e094d2b99 100644 --- a/lib/rack/commonlogger.rb +++ b/lib/rack/commonlogger.rb @@ -47,7 +47,7 @@ def log(env, status, header, began_at) env["REMOTE_USER"] || "-", now.strftime("%d/%b/%Y:%H:%M:%S %z"), env["REQUEST_METHOD"], - env["PATH_INFO"], + Utils.unescape(env["PATH_INFO"]), env["QUERY_STRING"].empty? ? "" : "?"+env["QUERY_STRING"], env["HTTP_VERSION"], status.to_s[0..3], diff --git a/test/spec_commonlogger.rb b/test/spec_commonlogger.rb index fd1f2521a..63300f5df 100644 --- a/test/spec_commonlogger.rb +++ b/test/spec_commonlogger.rb @@ -35,6 +35,19 @@ log.string.should =~ /"GET \/ " 200 #{length} / end + should "unescape the path" do + + app1 = Rack::Lint.new lambda { |env| + env["PATH_INFO"] = ::Rack::Utils.escape(env["PATH_INFO"]) + [200, + {"Content-Type" => "text/html", "Content-Length" => length.to_s}, + [obj]]} + + log = StringIO.new + Rack::MockRequest.new(Rack::CommonLogger.new(app1, log)).get("/favicon.ico") + log.string.should =~ /"GET \/favicon.ico " 200 #{length} / + end + should "work with standartd library logger" do logdev = StringIO.new log = Logger.new(logdev)