)]}'
{"swift/common/bufferedhttp.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"04f90f394a030ec0527542e6b9afaa708ed6f1a4","unresolved":false,"context_lines":[{"line_number":50,"context_line":"httplib._MAXHEADERS \u003d constraints.MAX_HEADER_COUNT * 1.6"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"def non_ascii_parse_headers(fp):"},{"line_number":54,"context_line":"    msg \u003d HTTPMessage()"},{"line_number":55,"context_line":"    buffered \u003d b\u0027\u0027"},{"line_number":56,"context_line":"    headers \u003d 0"}],"source_content_type":"text/x-python","patch_set":1,"id":"bfb3d3c7_57ce0f5a","line":53,"updated":"2019-05-31 15:43:44.000000000","message":"Bah -- wrong signature; forgot the _class arg. I was so busy looking at how it gets called in http.client that I missed that it was used in http.server.\n\nHrm... but the fact that this is affecting http.server makes me think I messed up the thread safety :-(\n\nMaybe I should bite the bullet and rewrite all of BufferedHTTPResponse.begin() similar to how I replaced HTTPConnection.putrequest() in https://github.com/openstack/swift/commit/c0ae48b ....","commit_id":"5d3f4fdbc1265035f70b3815495892a48924a8c3"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ce21c999c5d7e2852bf0c1fdd247c19cfd7a7eb3","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        line \u003d fp.readline(httplib._MAXLINE + 1)"},{"line_number":59,"context_line":"        if len(line) \u003e httplib._MAXLINE:"},{"line_number":60,"context_line":"            raise httplib.LineTooLong(\"header line\")"},{"line_number":61,"context_line":"        if line[:1] in (b\u0027 \u0027, b\u0027\\t\u0027):"},{"line_number":62,"context_line":"            if not buffered:"},{"line_number":63,"context_line":"                raise Exception"},{"line_number":64,"context_line":"            buffered +\u003d line.rstrip(b\u0027\\r\\n\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bfb3d3c7_b8b437f3","line":61,"updated":"2019-05-30 01:23:03.000000000","message":"I wonder how much we actually need to worry about header folding... and whether I actually got it right :-/","commit_id":"5d3f4fdbc1265035f70b3815495892a48924a8c3"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ce21c999c5d7e2852bf0c1fdd247c19cfd7a7eb3","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            green_orig \u003d httplib.parse_headers"},{"line_number":124,"context_line":"            try:"},{"line_number":125,"context_line":"                httplib.parse_headers \u003d non_ascii_parse_headers"},{"line_number":126,"context_line":"                green_httplib.parse_headers \u003d non_ascii_parse_headers"},{"line_number":127,"context_line":"                return super().begin()"},{"line_number":128,"context_line":"            finally:"},{"line_number":129,"context_line":"                httplib.parse_headers \u003d orig"}],"source_content_type":"text/x-python","patch_set":1,"id":"bfb3d3c7_f8070fc9","line":126,"range":{"start_line":126,"start_character":16,"end_line":126,"end_character":29},"updated":"2019-05-30 01:23:03.000000000","message":"It\u0027s the green one that seemed to really matter, at least in the proxy.","commit_id":"5d3f4fdbc1265035f70b3815495892a48924a8c3"}],"swift/common/memcached.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ce21c999c5d7e2852bf0c1fdd247c19cfd7a7eb3","unresolved":false,"context_lines":[{"line_number":138,"context_line":"        sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)"},{"line_number":139,"context_line":"        with Timeout(self._connect_timeout):"},{"line_number":140,"context_line":"            sock.connect(sockaddr)"},{"line_number":141,"context_line":"        return (sock.makefile(\u0027rwb\u0027), sock)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    def get(self):"},{"line_number":144,"context_line":"        fp, sock \u003d super(MemcacheConnPool, self).get()"}],"source_content_type":"text/x-python","patch_set":1,"id":"bfb3d3c7_58fc1bb4","line":141,"updated":"2019-05-30 01:23:03.000000000","message":"Without this, we\u0027d always get timeouts since we\u0027d never see b\u0027END\u0027 or b\u0027VALUE\u0027","commit_id":"5d3f4fdbc1265035f70b3815495892a48924a8c3"}],"swift/proxy/controllers/base.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ce21c999c5d7e2852bf0c1fdd247c19cfd7a7eb3","unresolved":false,"context_lines":[{"line_number":124,"context_line":"    other \u003d {}"},{"line_number":125,"context_line":"    for key, val in dict(headers).items():"},{"line_number":126,"context_line":"        lkey \u003d wsgi_to_str(key).lower()"},{"line_number":127,"context_line":"        val \u003d wsgi_to_str(val)"},{"line_number":128,"context_line":"        if is_user_meta(server_type, lkey):"},{"line_number":129,"context_line":"            meta[strip_user_meta_prefix(server_type, lkey)] \u003d val"},{"line_number":130,"context_line":"        elif is_sys_meta(server_type, lkey):"}],"source_content_type":"text/x-python","patch_set":1,"id":"bfb3d3c7_58eadbd7","line":127,"updated":"2019-05-30 01:23:03.000000000","message":"This part\u0027s the key. Make sure you don\u0027t do something stupid like\n\n lkey \u003d wsgi_to_str(key.lower())\n\nthough! From experience, that doesn\u0027t work so well \u003e.\u003c","commit_id":"5d3f4fdbc1265035f70b3815495892a48924a8c3"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ce21c999c5d7e2852bf0c1fdd247c19cfd7a7eb3","unresolved":false,"context_lines":[{"line_number":466,"context_line":""},{"line_number":467,"context_line":"    account \u003d to_native(account)"},{"line_number":468,"context_line":"    container \u003d to_native(container)"},{"line_number":469,"context_line":"    obj \u003d to_native(obj)"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"    if obj:"},{"line_number":472,"context_line":"        if not (account and container):"}],"source_content_type":"text/x-python","patch_set":1,"id":"bfb3d3c7_5815fbe3","line":469,"updated":"2019-05-30 01:23:03.000000000","message":"This part was just me trying to keep my sanity while working with a memcache-check script like\n\n import json\n \n from swift.common.memcached import MemcacheRing\n from swift.proxy.controllers.base import get_cache_key\n \n client \u003d MemcacheRing([\u0027127.0.0.1:11211\u0027])\n info \u003d client.get(get_cache_key(\u0027AUTH_test\u0027, u\u0027\\U0001F334\u0027.encode(\u0027utf8\u0027)))\n print(json.dumps(info))\n \n info \u003d client.get(get_cache_key(\u0027AUTH_test\u0027, u\u0027\\U0001F334\u0027))\n print(json.dumps(info))\n\nand running it under both py2 and py3.","commit_id":"5d3f4fdbc1265035f70b3815495892a48924a8c3"}]}
