)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"72a7f08c213434e2d8c3341ba60e8d4ef0e79f6e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"5c056fd7_80c13a75","updated":"2026-09-15 17:19:28.000000000","message":"This work but is a bit ugly....ideally controller specific behaviours (including when we install the hashing input proxies) would be driven by controllers and not performed in the request constructor, but that\u0027s much larger scope.","commit_id":"4e3ad03058d420bf17c0edc8a829fd6517194f09"}],"swift/common/middleware/s3api/s3request.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"72a7f08c213434e2d8c3341ba60e8d4ef0e79f6e","unresolved":true,"context_lines":[{"line_number":1087,"context_line":"                  and \u0027X-Amz-Copy-Source\u0027 not in self.headers"},{"line_number":1088,"context_line":"                  and not any("},{"line_number":1089,"context_line":"                    [param in self.params for param in"},{"line_number":1090,"context_line":"                     (\u0027acl\u0027, \u0027logging\u0027, \u0027tagging\u0027)])):"},{"line_number":1091,"context_line":"                raise MissingContentLength"},{"line_number":1092,"context_line":"            elif checksum_trailer:"},{"line_number":1093,"context_line":"                raise MalformedTrailerError"}],"source_content_type":"text/x-python","patch_set":1,"id":"ea130b69_ac93314a","line":1090,"updated":"2026-09-15 17:19:28.000000000","message":"the bleed through of controller specific behaviour to S3Request is unfortunate...some controllers want to return a different error","commit_id":"4e3ad03058d420bf17c0edc8a829fd6517194f09"}]}
