)]}'
{"swift/common/wsgi.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"0ae1ab971b7e5d012542725c24b5b14c38c9207e","unresolved":false,"context_lines":[{"line_number":481,"context_line":"                    for part in query.split(b\u0027\u0026\u0027)"},{"line_number":482,"context_line":"                    for key, sep, val in (part.partition(b\u0027\u003d\u0027), ))"},{"line_number":483,"context_line":"                parts[1] \u003d path + q + query"},{"line_number":484,"context_line":"                self.raw_requestline \u003d b\u0027 \u0027.join(parts)"},{"line_number":485,"context_line":"            # else, mangled protocol, most likely; let base class deal with it"},{"line_number":486,"context_line":"        return wsgi.HttpProtocol.parse_request(self)"},{"line_number":487,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_a23398aa","line":484,"updated":"2020-06-25 14:07:42.000000000","message":"so here this \"raw\" attribute is still munged","commit_id":"99efb58c877214322103426ac8792ab9c5619ee7"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"d4795e886fb8fd2326e4afe3c3ddedd6ff0f86ae","unresolved":false,"context_lines":[{"line_number":481,"context_line":"                    for part in query.split(b\u0027\u0026\u0027)"},{"line_number":482,"context_line":"                    for key, sep, val in (part.partition(b\u0027\u003d\u0027), ))"},{"line_number":483,"context_line":"                parts[1] \u003d path + q + query"},{"line_number":484,"context_line":"                self.raw_requestline \u003d b\u0027 \u0027.join(parts)"},{"line_number":485,"context_line":"            # else, mangled protocol, most likely; let base class deal with it"},{"line_number":486,"context_line":"        return wsgi.HttpProtocol.parse_request(self)"},{"line_number":487,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_b691164a","line":484,"in_reply_to":"bf51134e_a23398aa","updated":"2020-06-25 17:47:18.000000000","message":"Yup :-(\n\nThis is the only purpose of us overriding the function: to rewrite self.raw_requestline ahead of CPython\u0027s processing so we can work around https://bugs.python.org/issue33973.\n\nIt\u0027s also the crux of this issue.","commit_id":"99efb58c877214322103426ac8792ab9c5619ee7"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"0ae1ab971b7e5d012542725c24b5b14c38c9207e","unresolved":false,"context_lines":[{"line_number":489,"context_line":"        def get_environ(self, *args, **kwargs):"},{"line_number":490,"context_line":"            environ \u003d wsgi.HttpProtocol.get_environ(self, *args, **kwargs)"},{"line_number":491,"context_line":"            environ[\u0027RAW_PATH_INFO\u0027] \u003d bytes_to_wsgi("},{"line_number":492,"context_line":"                self.__raw_path_info)"},{"line_number":493,"context_line":"            header_payload \u003d self.headers.get_payload()"},{"line_number":494,"context_line":"            if isinstance(header_payload, list) and len(header_payload) \u003d\u003d 1:"},{"line_number":495,"context_line":"                header_payload \u003d header_payload[0].get_payload()"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_e2291037","line":492,"updated":"2020-06-25 14:07:42.000000000","message":"I don\u0027t actually see where this was getting changed","commit_id":"99efb58c877214322103426ac8792ab9c5619ee7"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"d4795e886fb8fd2326e4afe3c3ddedd6ff0f86ae","unresolved":false,"context_lines":[{"line_number":489,"context_line":"        def get_environ(self, *args, **kwargs):"},{"line_number":490,"context_line":"            environ \u003d wsgi.HttpProtocol.get_environ(self, *args, **kwargs)"},{"line_number":491,"context_line":"            environ[\u0027RAW_PATH_INFO\u0027] \u003d bytes_to_wsgi("},{"line_number":492,"context_line":"                self.__raw_path_info)"},{"line_number":493,"context_line":"            header_payload \u003d self.headers.get_payload()"},{"line_number":494,"context_line":"            if isinstance(header_payload, list) and len(header_payload) \u003d\u003d 1:"},{"line_number":495,"context_line":"                header_payload \u003d header_payload[0].get_payload()"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_36d22629","line":492,"in_reply_to":"bf51134e_e2291037","updated":"2020-06-25 17:47:18.000000000","message":"Eventlet\u0027s get_environ() populates RAW_PATH_INFO based on the protocol\u0027s path: https://github.com/eventlet/eventlet/blob/v0.25.1/eventlet/wsgi.py#L667\n\nThat path, in turn is set in CPython\u0027s parse_request(), based on the value of raw_requestline: https://github.com/python/cpython/blob/v3.8.3/Lib/http/server.py#L333","commit_id":"99efb58c877214322103426ac8792ab9c5619ee7"}]}
