lib/webrick/httpservlet/filehandler.rb: always handle a path as UTF-8

20200618T113134Z.fail.html.gz
```
  1) Failure:
WEBrick::TestFileHandler#test_cjk_in_path [D:/tmp/mswin-build20200618-84004-1t0dh8f/ruby/test/webrick/utils.rb:72]:
exceptions on 2 threads:
webrick log start:
  [2020-06-18 22:18:07] ERROR `/??.txt' not found.

webrick log end
Filesystem encoding is Windows-31J.
<"200"> expected but was
<"404">.
```
This commit is contained in:
Yusuke Endoh 2020-06-18 23:42:02 +09:00
parent 50c13eb718
commit 750203c514
2 changed files with 2 additions and 16 deletions

View file

@ -36,17 +36,12 @@ module WEBrick
def initialize(server, local_path)
super(server, local_path)
@local_path = local_path
@local_path = local_path.dup.force_encoding("UTF-8")
end
# :stopdoc:
def do_GET(req, res)
case enc = Encoding.find('filesystem')
when Encoding::US_ASCII, Encoding::ASCII_8BIT
else
@local_path = @local_path.dup.force_encoding(enc)
end
st = File::stat(@local_path)
mtime = st.mtime
res['etag'] = sprintf("%x-%x-%x", st.ino, st.size, st.mtime.to_i)