)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8542,"name":"Prashanth Pai","email":"ppai@redhat.com","username":"pai"},"change_message_id":"41be2680ba29702d05df8f25620b0a535b968b0b","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In the object proxy controller, the POST method checked the metadata of an"},{"line_number":10,"context_line":"object before calling swift.authorize. This could allow an auth middleware to"},{"line_number":11,"context_line":"set metadata that violates contraints. Instead, checking the metadata should"},{"line_number":12,"context_line":"take place after authorization."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I5f05039498c406473952e78c6a40ec11e8b53f8e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"dada55a8_69369853","line":11,"range":{"start_line":11,"start_character":27,"end_line":11,"end_character":37},"updated":"2016-07-19 09:19:28.000000000","message":"nit: constraints\n\n\nIf at all there is going to be a next patchset...","commit_id":"f9d015e7d80d25e0fcab2563cee073cb08f5456d"}],"test/unit/proxy/test_server.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"7eb7ebabf34528c0af6792a8b89a10ceef60fd9a","unresolved":false,"context_lines":[{"line_number":3418,"context_line":"            res \u003d req.get_response(self.app)"},{"line_number":3419,"context_line":"            self.assertEqual(res.status_int, 400)"},{"line_number":3420,"context_line":""},{"line_number":3421,"context_line":"    def test_POST_meta_authorize(self):"},{"line_number":3422,"context_line":"        def authorize(req):"},{"line_number":3423,"context_line":"            req.headers[\u0027X-Object-Meta-Foo\u0027] \u003d \u0027x\u0027 * (limit + 1)"},{"line_number":3424,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":4,"id":"bacf61ea_52a2eb99","line":3421,"updated":"2016-08-01 13:26:22.000000000","message":"nit: it would be useful to have a short comment explaining the significance of this test","commit_id":"aa2a84ba8a8d6ba08141492502b3872ad0d81c2d"},{"author":{"_account_id":8542,"name":"Prashanth Pai","email":"ppai@redhat.com","username":"pai"},"change_message_id":"c01543103859b5158a601652c11e4f4cea87b5f2","unresolved":false,"context_lines":[{"line_number":3424,"context_line":"            return"},{"line_number":3425,"context_line":"        with save_globals():"},{"line_number":3426,"context_line":"            limit \u003d constraints.MAX_META_VALUE_LENGTH"},{"line_number":3427,"context_line":"            self.app.object_post_as_copy \u003d False"},{"line_number":3428,"context_line":"            controller \u003d ReplicatedObjectController("},{"line_number":3429,"context_line":"                self.app, \u0027account\u0027, \u0027container\u0027, \u0027object\u0027)"},{"line_number":3430,"context_line":"            set_http_connect(200, 200, 202, 202, 202)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bacf61ea_f7003103","line":3427,"range":{"start_line":3427,"start_character":20,"end_line":3427,"end_character":21},"updated":"2016-08-01 10:15:32.000000000","message":"This is handled by copy middleware now. I\u0027m wondering if it should be removed from tests in this file here and elsewhere.","commit_id":"aa2a84ba8a8d6ba08141492502b3872ad0d81c2d"},{"author":{"_account_id":8542,"name":"Prashanth Pai","email":"ppai@redhat.com","username":"pai"},"change_message_id":"ef17e1d7fc20bceecc01497f0c7b27916d89555d","unresolved":false,"context_lines":[{"line_number":3424,"context_line":"            return"},{"line_number":3425,"context_line":"        with save_globals():"},{"line_number":3426,"context_line":"            limit \u003d constraints.MAX_META_VALUE_LENGTH"},{"line_number":3427,"context_line":"            self.app.object_post_as_copy \u003d False"},{"line_number":3428,"context_line":"            controller \u003d ReplicatedObjectController("},{"line_number":3429,"context_line":"                self.app, \u0027account\u0027, \u0027container\u0027, \u0027object\u0027)"},{"line_number":3430,"context_line":"            set_http_connect(200, 200, 202, 202, 202)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bacf61ea_637ac489","line":3427,"range":{"start_line":3427,"start_character":20,"end_line":3427,"end_character":21},"in_reply_to":"bacf61ea_72d0cf1f","updated":"2016-08-01 11:17:14.000000000","message":"But the proxy server code has no references to it.\n\nThe copy middleware takes care of maintaining backwards compatibility by reading the conf option (object_post_as_copy) of Proxy server in addition to conf of the middleware itself.","commit_id":"aa2a84ba8a8d6ba08141492502b3872ad0d81c2d"},{"author":{"_account_id":12261,"name":"Mahati","email":"mahati.chamarthy@gmail.com","username":"Mahati"},"change_message_id":"c9ed8c1642515ddb5f8920b5f979d2272d5c564c","unresolved":false,"context_lines":[{"line_number":3424,"context_line":"            return"},{"line_number":3425,"context_line":"        with save_globals():"},{"line_number":3426,"context_line":"            limit \u003d constraints.MAX_META_VALUE_LENGTH"},{"line_number":3427,"context_line":"            self.app.object_post_as_copy \u003d False"},{"line_number":3428,"context_line":"            controller \u003d ReplicatedObjectController("},{"line_number":3429,"context_line":"                self.app, \u0027account\u0027, \u0027container\u0027, \u0027object\u0027)"},{"line_number":3430,"context_line":"            set_http_connect(200, 200, 202, 202, 202)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bacf61ea_72d0cf1f","line":3427,"range":{"start_line":3427,"start_character":20,"end_line":3427,"end_character":21},"in_reply_to":"bacf61ea_f7003103","updated":"2016-08-01 10:46:34.000000000","message":"I think we decided to keep post_as_copy for backwards compatibility for now. So maybe this doesn\u0027t need to be changed in the files at this point.","commit_id":"aa2a84ba8a8d6ba08141492502b3872ad0d81c2d"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"7eb7ebabf34528c0af6792a8b89a10ceef60fd9a","unresolved":false,"context_lines":[{"line_number":3424,"context_line":"            return"},{"line_number":3425,"context_line":"        with save_globals():"},{"line_number":3426,"context_line":"            limit \u003d constraints.MAX_META_VALUE_LENGTH"},{"line_number":3427,"context_line":"            self.app.object_post_as_copy \u003d False"},{"line_number":3428,"context_line":"            controller \u003d ReplicatedObjectController("},{"line_number":3429,"context_line":"                self.app, \u0027account\u0027, \u0027container\u0027, \u0027object\u0027)"},{"line_number":3430,"context_line":"            set_http_connect(200, 200, 202, 202, 202)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bacf61ea_92a8e378","line":3427,"range":{"start_line":3427,"start_character":20,"end_line":3427,"end_character":21},"in_reply_to":"bacf61ea_f7003103","updated":"2016-08-01 13:26:22.000000000","message":"Yes. good spot.","commit_id":"aa2a84ba8a8d6ba08141492502b3872ad0d81c2d"},{"author":{"_account_id":12261,"name":"Mahati","email":"mahati.chamarthy@gmail.com","username":"Mahati"},"change_message_id":"c9ed8c1642515ddb5f8920b5f979d2272d5c564c","unresolved":false,"context_lines":[{"line_number":3428,"context_line":"            controller \u003d ReplicatedObjectController("},{"line_number":3429,"context_line":"                self.app, \u0027account\u0027, \u0027container\u0027, \u0027object\u0027)"},{"line_number":3430,"context_line":"            set_http_connect(200, 200, 202, 202, 202)"},{"line_number":3431,"context_line":"            #                acct cont obj  obj  obj"},{"line_number":3432,"context_line":"            req \u003d Request.blank(\u0027/v1/a/c/o\u0027, {\u0027REQUEST_METHOD\u0027: \u0027POST\u0027},"},{"line_number":3433,"context_line":"                                headers\u003d{\u0027Content-Type\u0027: \u0027foo/bar\u0027,"},{"line_number":3434,"context_line":"                                         \u0027X-Object-Meta-Foo\u0027: \u0027x\u0027})"}],"source_content_type":"text/x-python","patch_set":4,"id":"bacf61ea_d2bc1bbd","line":3431,"updated":"2016-08-01 10:46:34.000000000","message":"nit: remove the commented line","commit_id":"aa2a84ba8a8d6ba08141492502b3872ad0d81c2d"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"7eb7ebabf34528c0af6792a8b89a10ceef60fd9a","unresolved":false,"context_lines":[{"line_number":3428,"context_line":"            controller \u003d ReplicatedObjectController("},{"line_number":3429,"context_line":"                self.app, \u0027account\u0027, \u0027container\u0027, \u0027object\u0027)"},{"line_number":3430,"context_line":"            set_http_connect(200, 200, 202, 202, 202)"},{"line_number":3431,"context_line":"            #                acct cont obj  obj  obj"},{"line_number":3432,"context_line":"            req \u003d Request.blank(\u0027/v1/a/c/o\u0027, {\u0027REQUEST_METHOD\u0027: \u0027POST\u0027},"},{"line_number":3433,"context_line":"                                headers\u003d{\u0027Content-Type\u0027: \u0027foo/bar\u0027,"},{"line_number":3434,"context_line":"                                         \u0027X-Object-Meta-Foo\u0027: \u0027x\u0027})"}],"source_content_type":"text/x-python","patch_set":4,"id":"bacf61ea_154336b3","line":3431,"in_reply_to":"bacf61ea_d2bc1bbd","updated":"2016-08-01 13:26:22.000000000","message":"actually these comments can be really useful to decipher the set of response codes","commit_id":"aa2a84ba8a8d6ba08141492502b3872ad0d81c2d"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"7eb7ebabf34528c0af6792a8b89a10ceef60fd9a","unresolved":false,"context_lines":[{"line_number":3435,"context_line":"            req.environ[\u0027swift.authorize\u0027] \u003d authorize"},{"line_number":3436,"context_line":"            self.app.update_request(req)"},{"line_number":3437,"context_line":"            res \u003d controller.POST(req)"},{"line_number":3438,"context_line":"            self.assertEqual(res.status_int, 400)"},{"line_number":3439,"context_line":""},{"line_number":3440,"context_line":"    def test_POST_meta_key_len(self):"},{"line_number":3441,"context_line":"        with save_globals():"}],"source_content_type":"text/x-python","patch_set":4,"id":"bacf61ea_35bf5aab","line":3438,"updated":"2016-08-01 13:26:22.000000000","message":"nit: this is great. for completeness we should have a similar test for max name length, max meta count etc.","commit_id":"aa2a84ba8a8d6ba08141492502b3872ad0d81c2d"}]}
