diff options
author | Ben Bangert <ben@groovie.org> | 2020-10-13 09:22:38 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-13 09:22:38 -0700 |
commit | 3e405c4c9c47814541aa134be744a9e7e74ef073 (patch) | |
tree | 93162b6e013c808c8e02fa917a17dc7ec19a78c4 | |
parent | 2cf13312e63beed9e47ecbc84b1e02fb2f151c68 (diff) | |
parent | 017f5981783936dacb5455c481743ca8187efb0e (diff) | |
download | routes-3e405c4c9c47814541aa134be744a9e7e74ef073.tar.gz |
Merge pull request #94 from phillbaker/patch-1
Add graceful fallback for invalid character encoding
-rw-r--r-- | routes/middleware.py | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/routes/middleware.py b/routes/middleware.py index ba51ae3..4ee47da 100644 --- a/routes/middleware.py +++ b/routes/middleware.py @@ -61,9 +61,15 @@ class RoutesMiddleware(object): if '_method' in qs: req = Request(environ) req.errors = 'ignore' - if '_method' in req.GET: + + try: + method = req.GET.get('_method') + except UnicodeDecodeError: + method = None + + if method: old_method = environ['REQUEST_METHOD'] - environ['REQUEST_METHOD'] = req.GET['_method'].upper() + environ['REQUEST_METHOD'] = method.upper() if self.log_debug: log.debug("_method found in QUERY_STRING, altering " "request method to %s", @@ -72,9 +78,15 @@ class RoutesMiddleware(object): if req is None: req = Request(environ) req.errors = 'ignore' - if '_method' in req.POST: + + try: + method = req.POST.get('_method') + except UnicodeDecodeError: + method = None + + if method: old_method = environ['REQUEST_METHOD'] - environ['REQUEST_METHOD'] = req.POST['_method'].upper() + environ['REQUEST_METHOD'] = method.upper() if self.log_debug: log.debug("_method found in POST data, altering " "request method to %s", |