diff --git a/radicale/__init__.py b/radicale/__init__.py index 0bc8d1d..e11ffc8 100644 --- a/radicale/__init__.py +++ b/radicale/__init__.py @@ -38,6 +38,7 @@ import socketserver import ssl import subprocess import threading +import urllib import wsgiref.simple_server import zlib from contextlib import contextmanager @@ -133,6 +134,12 @@ class RequestHandler(wsgiref.simple_server.WSGIRequestHandler): def log_message(self, *args, **kwargs): """Disable inner logging management.""" + def get_environ(self): + env = super().get_environ() + # Parent class only tries latin1 encoding + env["PATH_INFO"] = urllib.parse.unquote(self.path.split("?", 1)[0]) + return env + class Application: """WSGI application managing collections."""