summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Bangert <ben@groovie.org>2020-10-13 09:22:38 -0700
committerGitHub <noreply@github.com>2020-10-13 09:22:38 -0700
commit3e405c4c9c47814541aa134be744a9e7e74ef073 (patch)
tree93162b6e013c808c8e02fa917a17dc7ec19a78c4
parent2cf13312e63beed9e47ecbc84b1e02fb2f151c68 (diff)
parent017f5981783936dacb5455c481743ca8187efb0e (diff)
downloadroutes-3e405c4c9c47814541aa134be744a9e7e74ef073.tar.gz
Merge pull request #94 from phillbaker/patch-1
Add graceful fallback for invalid character encoding
-rw-r--r--routes/middleware.py20
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",