)]}'
{"swift/common/bufferedhttp.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"4966b47028aea51f835a5cf0bfbc0d4c57a010a1","unresolved":false,"context_lines":[{"line_number":127,"context_line":"                return super().begin()"},{"line_number":128,"context_line":"            finally:"},{"line_number":129,"context_line":"                httplib.parse_headers \u003d orig"},{"line_number":130,"context_line":"                green_httplib.parse_headers \u003d green_orig"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def expect_response(self):"},{"line_number":133,"context_line":"        if self.fp:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_dfadbf31","line":130,"updated":"2019-06-06 18:17:38.000000000","message":"I\u0027m not sure this is threadsafe -- should I just swap out parse_headers globally?","commit_id":"2812934d060521a59701915c7f19e789de6a0bf6"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"e2c773abe69320dd25cc945a8fe58a0f298aa444","unresolved":false,"context_lines":[{"line_number":127,"context_line":"                return super().begin()"},{"line_number":128,"context_line":"            finally:"},{"line_number":129,"context_line":"                httplib.parse_headers \u003d orig"},{"line_number":130,"context_line":"                green_httplib.parse_headers \u003d green_orig"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def expect_response(self):"},{"line_number":133,"context_line":"        if self.fp:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_50e76713","line":130,"in_reply_to":"9fb8cfa7_900f1fe0","updated":"2019-06-07 22:15:37.000000000","message":"Definitely worried about fragility with respect to upstream\u0027s changes. The only reason I was willing to tolerate that sort of thing in https://github.com/openstack/swift/commit/c0ae48b was that it was in a test client.\n\nI think you may have figured out why I needed to patch out both httplib and green_httplib. I\u0027d been wondering about what was up with that -- and MAX_HEADERS, too; thanks!\n\nFWIW, eventlet\u0027s implementation matches cpython\u0027s: https://github.com/python/cpython/blob/v3.7.3/Lib/http/client.py#L193\n\nMaybe I could just call super\u0027s implementation then look for a payload attached to self.headers like I went with in https://github.com/eventlet/eventlet/pull/574 ?\n\nUgh. IDK what the best idea is...","commit_id":"2812934d060521a59701915c7f19e789de6a0bf6"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"163d37ef00915087a6b11debe9ee28243f6e06f1","unresolved":false,"context_lines":[{"line_number":127,"context_line":"                return super().begin()"},{"line_number":128,"context_line":"            finally:"},{"line_number":129,"context_line":"                httplib.parse_headers \u003d orig"},{"line_number":130,"context_line":"                green_httplib.parse_headers \u003d green_orig"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def expect_response(self):"},{"line_number":133,"context_line":"        if self.fp:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_900f1fe0","line":130,"in_reply_to":"9fb8cfa7_dfadbf31","updated":"2019-06-07 22:01:16.000000000","message":"How about just copying the whole begin() from eventlet? Would that be too fragile against future changes in it? The current version saw no changes since its introduction in 2016.\n\nThere\u0027s also one thing I seriously do not understand about this, on the second thought. The begin() that I see uses a local parse_headers() function. It does not invoke the one in httplib (not even indirectly). So, how does patching httplib change anything at all?\n\nI\u0027m looking here:\nhttps://github.com/eventlet/eventlet/blob/master/eventlet/green/http/client.py#L248\n\nis it wrong file for eventlet that we use?","commit_id":"2812934d060521a59701915c7f19e789de6a0bf6"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"4966b47028aea51f835a5cf0bfbc0d4c57a010a1","unresolved":false,"context_lines":[{"line_number":150,"context_line":"                self.msg.fp \u003d None"},{"line_number":151,"context_line":"            else:"},{"line_number":152,"context_line":"                # py3 has a separate helper for it"},{"line_number":153,"context_line":"                self.headers \u003d self.msg \u003d httplib.parse_headers(self.fp)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def read(self, amt\u003dNone):"},{"line_number":156,"context_line":"        if not self._readline_buffer:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_bf980bc0","line":153,"range":{"start_line":153,"start_character":50,"end_line":153,"end_character":63},"updated":"2019-06-06 18:17:38.000000000","message":"Should maybe swap out this call too :-/","commit_id":"2812934d060521a59701915c7f19e789de6a0bf6"}]}
