)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"e5eb403f02b0f531de22b00349b513e460045bad","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"42544b5e_d69d6152","updated":"2026-05-11 16:00:52.000000000","message":"I don\u0027t really understand how this works; but if it passes against s3 it MUST be good!","commit_id":"cccb6809e662bcd3925565883e0fbd043a1e72c9"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"a37dc700b74425b3451fff61686c80014c34d4cc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"06508349_e5258849","updated":"2026-05-11 14:55:10.000000000","message":"Passes against S3 and Swift on my VSAIO. If I revert the fix in the parent patch then the test runs approx forever","commit_id":"cccb6809e662bcd3925565883e0fbd043a1e72c9"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"cfdd2a7a8caf57360cb7406847116e5abae4e616","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"a0964249_4368edee","updated":"2026-05-12 04:07:22.000000000","message":"The fact that is tends to run forever in master is a little scary. Nice one Christian.","commit_id":"cccb6809e662bcd3925565883e0fbd043a1e72c9"}],"test/s3api/test_input_errors.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"a37dc700b74425b3451fff61686c80014c34d4cc","unresolved":true,"context_lines":[{"line_number":2146,"context_line":"        # actually delivered before Content-Length is reached. The wsgi input"},{"line_number":2147,"context_line":"        # then returns b\u0027\u0027 mid-chunk. Ensure StreamingInput does not loop"},{"line_number":2148,"context_line":"        # forever on the empty read; the fix raises S3InputIncomplete and the"},{"line_number":2149,"context_line":"        # proxy maps that to 400 IncompleteBody."},{"line_number":2150,"context_line":"        chunk_size \u003d 8192"},{"line_number":2151,"context_line":"        body \u003d b\u0027%x\\r\\n\u0027 % chunk_size + b\u0027A\u0027 * 100"},{"line_number":2152,"context_line":"        request \u003d self.conn.build_request("}],"source_content_type":"text/x-python","patch_set":1,"id":"c342bb10_3007c179","line":2149,"updated":"2026-05-11 14:55:10.000000000","message":"nit: possibly overly secific implementation detail for a compat test","commit_id":"cccb6809e662bcd3925565883e0fbd043a1e72c9"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"a8a62fe8ee9d37ea39f9e83c0850fdf8cd0e0867","unresolved":false,"context_lines":[{"line_number":2146,"context_line":"        # actually delivered before Content-Length is reached. The wsgi input"},{"line_number":2147,"context_line":"        # then returns b\u0027\u0027 mid-chunk. Ensure StreamingInput does not loop"},{"line_number":2148,"context_line":"        # forever on the empty read; the fix raises S3InputIncomplete and the"},{"line_number":2149,"context_line":"        # proxy maps that to 400 IncompleteBody."},{"line_number":2150,"context_line":"        chunk_size \u003d 8192"},{"line_number":2151,"context_line":"        body \u003d b\u0027%x\\r\\n\u0027 % chunk_size + b\u0027A\u0027 * 100"},{"line_number":2152,"context_line":"        request \u003d self.conn.build_request("}],"source_content_type":"text/x-python","patch_set":1,"id":"8ff4065c_9bcad696","line":2149,"in_reply_to":"c342bb10_3007c179","updated":"2026-05-12 14:28:40.000000000","message":"Acknowledged","commit_id":"cccb6809e662bcd3925565883e0fbd043a1e72c9"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"a37dc700b74425b3451fff61686c80014c34d4cc","unresolved":true,"context_lines":[{"line_number":2157,"context_line":"                \u0027x-amz-content-sha256\u0027: \u0027STREAMING-UNSIGNED-PAYLOAD-TRAILER\u0027,"},{"line_number":2158,"context_line":"                \u0027content-encoding\u0027: \u0027aws-chunked\u0027,"},{"line_number":2159,"context_line":"                \u0027x-amz-decoded-content-length\u0027: str(chunk_size),"},{"line_number":2160,"context_line":"                \u0027content-length\u0027: str(len(body)),"},{"line_number":2161,"context_line":"            },"},{"line_number":2162,"context_line":"        )"},{"line_number":2163,"context_line":"        self.conn.sign_request(request)"}],"source_content_type":"text/x-python","patch_set":1,"id":"e88a128b_ce1fdee8","line":2160,"updated":"2026-05-11 14:55:10.000000000","message":"ok, content-length is the length of the actual sent (truncated) body, so once that is all read the input will return b\u0027\u0027 but the aws-chunked payload will not have completed","commit_id":"cccb6809e662bcd3925565883e0fbd043a1e72c9"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"cfdd2a7a8caf57360cb7406847116e5abae4e616","unresolved":true,"context_lines":[{"line_number":2157,"context_line":"                \u0027x-amz-content-sha256\u0027: \u0027STREAMING-UNSIGNED-PAYLOAD-TRAILER\u0027,"},{"line_number":2158,"context_line":"                \u0027content-encoding\u0027: \u0027aws-chunked\u0027,"},{"line_number":2159,"context_line":"                \u0027x-amz-decoded-content-length\u0027: str(chunk_size),"},{"line_number":2160,"context_line":"                \u0027content-length\u0027: str(len(body)),"},{"line_number":2161,"context_line":"            },"},{"line_number":2162,"context_line":"        )"},{"line_number":2163,"context_line":"        self.conn.sign_request(request)"}],"source_content_type":"text/x-python","patch_set":1,"id":"68aa7db8_d8774f9a","line":2160,"in_reply_to":"00ea80d5_d1dd1db3","updated":"2026-05-12 04:07:22.000000000","message":"I guess the crux is it isn\u0027t using `transfer-encoding: chunked` it\u0027s using aws\u0027s own `aws-chunked` which basically allows the sig v4 to be done in stages, but also implements their own chunked like scheme.. Which Christian is doing in the body incorrectly to cause the issue.","commit_id":"cccb6809e662bcd3925565883e0fbd043a1e72c9"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"e5eb403f02b0f531de22b00349b513e460045bad","unresolved":true,"context_lines":[{"line_number":2157,"context_line":"                \u0027x-amz-content-sha256\u0027: \u0027STREAMING-UNSIGNED-PAYLOAD-TRAILER\u0027,"},{"line_number":2158,"context_line":"                \u0027content-encoding\u0027: \u0027aws-chunked\u0027,"},{"line_number":2159,"context_line":"                \u0027x-amz-decoded-content-length\u0027: str(chunk_size),"},{"line_number":2160,"context_line":"                \u0027content-length\u0027: str(len(body)),"},{"line_number":2161,"context_line":"            },"},{"line_number":2162,"context_line":"        )"},{"line_number":2163,"context_line":"        self.conn.sign_request(request)"}],"source_content_type":"text/x-python","patch_set":1,"id":"00ea80d5_d1dd1db3","line":2160,"in_reply_to":"e88a128b_ce1fdee8","updated":"2026-05-11 16:00:52.000000000","message":"I don\u0027t really understand what\u0027s going on here; I would expect that we can send `content-length` AND `content-encoding: aws-chunked` - *I* thought that `content-encoding: aws-chunked` was limited to `transfer-encoding: chunked`","commit_id":"cccb6809e662bcd3925565883e0fbd043a1e72c9"}]}
