From 83ca4f1bb0a4ada06353b0ac16ff654c49441fe3 Mon Sep 17 00:00:00 2001 From: Tim Burke Date: Thu, 12 Apr 2018 21:28:33 +0000 Subject: [PATCH] Handful of formpost cleanups - Drop an unnecessary return value from _perform_subrequest - Stop checking for a CONTENT_TYPE that will never be set - Use reiterate - Close the response iter when we're done with it Change-Id: Ib8cc7cd42b230197844f275d7caf9eb7b3c204f8 --- swift/common/middleware/formpost.py | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/swift/common/middleware/formpost.py b/swift/common/middleware/formpost.py index 8ba5ddc51e..3cabc167d0 100644 --- a/swift/common/middleware/formpost.py +++ b/swift/common/middleware/formpost.py @@ -121,7 +121,7 @@ from swift.common.exceptions import MimeInvalid from swift.common.middleware.tempurl import get_tempurl_keys_from_metadata from swift.common.utils import streq_const_time, register_swift_info, \ parse_content_disposition, parse_mime_headers, \ - iter_multipart_mime_documents + iter_multipart_mime_documents, reiterate, close_if_possible from swift.common.wsgi import make_pre_authed_env from swift.common.swob import HTTPUnauthorized from swift.proxy.controllers.base import get_account_info, get_container_info @@ -270,7 +270,7 @@ class FormPost(object): if 'content-type' not in attributes and 'content-type' in hdrs: attributes['content-type'] = \ hdrs['Content-Type'] or 'application/octet-stream' - status, subheaders, message = \ + status, subheaders = \ self._perform_subrequest(env, attributes, fp, keys) if not status.startswith('2'): break @@ -323,7 +323,7 @@ class FormPost(object): :param attributes: dict of the attributes of the form so far. :param fp: The file-like object containing the request body. :param keys: The account keys to validate the signature with. - :returns: (status_line, headers_list, message) + :returns: (status_line, headers_list) """ if not keys: raise FormUnauthorized('invalid signature') @@ -357,8 +357,6 @@ class FormPost(object): if 'content-type' in attributes: subenv['CONTENT_TYPE'] = \ attributes['content-type'] or 'application/octet-stream' - elif 'CONTENT_TYPE' in subenv: - del subenv['CONTENT_TYPE'] try: if int(attributes.get('expires') or 0) < time(): raise FormUnauthorized('form expired') @@ -392,12 +390,10 @@ class FormPost(object): substatus[0] = status subheaders[0] = headers - i = iter(self.app(subenv, _start_response)) - try: - next(i) - except StopIteration: - pass - return substatus[0], subheaders[0], '' + # reiterate to ensure the response started, + # but drop any data on the floor + close_if_possible(reiterate(self.app(subenv, _start_response))) + return substatus[0], subheaders[0] def _get_keys(self, env): """