)]}'
{"swift/common/middleware/formpost.py":[{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"9edd81e68a9ca049eb167db7abc7e8b2e88595dc","unresolved":false,"context_lines":[{"line_number":358,"context_line":"            subenv[\u0027CONTENT_TYPE\u0027] \u003d \\"},{"line_number":359,"context_line":"                attributes[\u0027content-type\u0027] or \u0027application/octet-stream\u0027"},{"line_number":360,"context_line":"        elif \u0027CONTENT_TYPE\u0027 in subenv:"},{"line_number":361,"context_line":"            del subenv[\u0027CONTENT_TYPE\u0027]"},{"line_number":362,"context_line":"        try:"},{"line_number":363,"context_line":"            if int(attributes.get(\u0027expires\u0027) or 0) \u003c time():"},{"line_number":364,"context_line":"                raise FormUnauthorized(\u0027form expired\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f6a8fd7_f9936a5b","side":"PARENT","line":361,"updated":"2018-04-16 08:50:57.000000000","message":"this looks good to me. Only thing I\u0027m not sure, what happens when neither attribute nor request headers contains CONTENT_TYPE but it\u0027s obviously off-topic.","commit_id":"0a6f0d615c80d6288ce02eb623467fc2d2a04dcf"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"9edd81e68a9ca049eb167db7abc7e8b2e88595dc","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        :returns: status_line, headers_list, body"},{"line_number":249,"context_line":"        \"\"\""},{"line_number":250,"context_line":"        keys \u003d self._get_keys(env)"},{"line_number":251,"context_line":"        status \u003d message \u003d \u0027\u0027"},{"line_number":252,"context_line":"        attributes \u003d {}"},{"line_number":253,"context_line":"        subheaders \u003d []"},{"line_number":254,"context_line":"        file_count \u003d 0"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f6a8fd7_d969c68b","line":251,"range":{"start_line":251,"start_character":27,"end_line":251,"end_character":29},"updated":"2018-04-16 08:50:57.000000000","message":"okay, the message is defined here so no problem if _perform_subrequest doesn\u0027t return anything on it.","commit_id":"83ca4f1bb0a4ada06353b0ac16ff654c49441fe3"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"9edd81e68a9ca049eb167db7abc7e8b2e88595dc","unresolved":false,"context_lines":[{"line_number":270,"context_line":"                if \u0027content-type\u0027 not in attributes and \u0027content-type\u0027 in hdrs:"},{"line_number":271,"context_line":"                    attributes[\u0027content-type\u0027] \u003d \\"},{"line_number":272,"context_line":"                        hdrs[\u0027Content-Type\u0027] or \u0027application/octet-stream\u0027"},{"line_number":273,"context_line":"                status, subheaders \u003d \\"},{"line_number":274,"context_line":"                    self._perform_subrequest(env, attributes, fp, keys)"},{"line_number":275,"context_line":"                if not status.startswith(\u00272\u0027):"},{"line_number":276,"context_line":"                    break"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f6a8fd7_99c02e53","line":273,"range":{"start_line":273,"start_character":24,"end_line":273,"end_character":34},"updated":"2018-04-16 08:50:57.000000000","message":"Off topic:\n\nI\u0027m wondering if we could keep only the last sub(response)headers of a bunch of subrequests to return to the client. it\u0027s same behavior with current code tho.","commit_id":"83ca4f1bb0a4ada06353b0ac16ff654c49441fe3"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"709188efbb46a8ed6e9b250ba0ab777e33d629c1","unresolved":false,"context_lines":[{"line_number":331,"context_line":"            max_file_size \u003d int(attributes.get(\u0027max_file_size\u0027) or 0)"},{"line_number":332,"context_line":"        except ValueError:"},{"line_number":333,"context_line":"            raise FormInvalid(\u0027max_file_size not an integer\u0027)"},{"line_number":334,"context_line":"        subenv \u003d make_pre_authed_env(orig_env, \u0027PUT\u0027, agent\u003dNone,"},{"line_number":335,"context_line":"                                     swift_source\u003d\u0027FP\u0027)"},{"line_number":336,"context_line":"        if \u0027QUERY_STRING\u0027 in subenv:"},{"line_number":337,"context_line":"            del subenv[\u0027QUERY_STRING\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_a4d19225","line":334,"range":{"start_line":334,"start_character":17,"end_line":334,"end_character":36},"updated":"2018-04-12 21:42:27.000000000","message":"See https://github.com/openstack/swift/blob/2.17.0/swift/common/wsgi.py#L1102-L1219 -- none of that touches Content-Type.\n\nDidn\u0027t even do it back in https://github.com/openstack/swift/commit/0ec5eef when we *added* the `elif CONTENT_TYPE in subenv` check, so IDK what that was about.","commit_id":"83ca4f1bb0a4ada06353b0ac16ff654c49441fe3"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"9edd81e68a9ca049eb167db7abc7e8b2e88595dc","unresolved":false,"context_lines":[{"line_number":388,"context_line":"                raise EOFError(\"max_file_size exceeded\")"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"            substatus[0] \u003d status"},{"line_number":391,"context_line":"            subheaders[0] \u003d headers"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"        # reiterate to ensure the response started,"},{"line_number":394,"context_line":"        # but drop any data on the floor"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f6a8fd7_599db657","line":391,"updated":"2018-04-16 08:50:57.000000000","message":"Perhaps, setting the body from the result of app call here would be useful to know the reason on an error case?","commit_id":"83ca4f1bb0a4ada06353b0ac16ff654c49441fe3"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"9edd81e68a9ca049eb167db7abc7e8b2e88595dc","unresolved":false,"context_lines":[{"line_number":393,"context_line":"        # reiterate to ensure the response started,"},{"line_number":394,"context_line":"        # but drop any data on the floor"},{"line_number":395,"context_line":"        close_if_possible(reiterate(self.app(subenv, _start_response)))"},{"line_number":396,"context_line":"        return substatus[0], subheaders[0]"},{"line_number":397,"context_line":""},{"line_number":398,"context_line":"    def _get_keys(self, env):"},{"line_number":399,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f6a8fd7_146ce534","line":396,"updated":"2018-04-16 08:50:57.000000000","message":"I wonder if we could have tests to ensure the contents successfully closed like https://github.com/openstack/swift/blob/master/test/unit/common/test_wsgi.py#L1345-L1367","commit_id":"83ca4f1bb0a4ada06353b0ac16ff654c49441fe3"}]}
