From bdfabe5e64f3ee1c11a2f8eb8f16190bc98436aa Mon Sep 17 00:00:00 2001 From: ianb Date: Thu, 20 Jul 2006 00:07:57 +0000 Subject: Keep wsgi.input from being eaten when the cgi module is looking for POST variables --- paste/request.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'paste/request.py') diff --git a/paste/request.py b/paste/request.py index 52431a2..25a2972 100644 --- a/paste/request.py +++ b/paste/request.py @@ -148,9 +148,23 @@ def parse_formvars(environ, all_as_list=False, include_get_vars=True): parsed, check_source = environ['paste.parsed_formvars'] if check_source == source: return parsed - fs = cgi.FieldStorage(fp=environ['wsgi.input'], + type = environ.get('CONTENT_TYPE', '').lower() + fake_out_cgi = type not in ('', 'multipart/form-data', + 'application/x-www-form-urlencoded') + if fake_out_cgi: + input = StringIO('') + old_content_type = environ.get('CONTENT_TYPE') + old_content_length = environ.get('CONTENT_LENGTH') + environ['CONTENT_LENGTH'] = '0' + environ['CONTENT_TYPE'] = '' + else: + input = environ['wsgi.input'] + fs = cgi.FieldStorage(fp=input, environ=environ, keep_blank_values=1) + if fake_out_cgi: + environ['CONTENT_TYPE'] = old_content_type + environ['CONTENT_LENGTH'] = old_content_length formvars = {} if not isinstance(fs.value, list): # Non-HTML form submission, so we just -- cgit v1.2.1