)]}'
{"swift/common/http_protocol.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"e94d28276a9fa15d57beaea206458bc0eb89efa1","unresolved":true,"context_lines":[{"line_number":12,"context_line":"# decision and the protocol object that\u0027s responsible for discarding."},{"line_number":13,"context_line":"# Note that it *must* be set in the same greenthread that\u0027s handling"},{"line_number":14,"context_line":"# the client request, though."},{"line_number":15,"context_line":"LOCALS \u003d corolocal.local()"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"class SwiftHttpProtocol(wsgi.HttpProtocol):"}],"source_content_type":"text/x-python","patch_set":1,"id":"74813bef_fddec623","line":15,"updated":"2021-07-07 22:02:03.000000000","message":"this is an akward little string to tug at","commit_id":"96656824d1c6eae5389ee60adbe3f80a37258dfd"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"e94d28276a9fa15d57beaea206458bc0eb89efa1","unresolved":true,"context_lines":[{"line_number":23,"context_line":"        self.pre_shutdown_bugfix_eventlet \u003d not getattr("},{"line_number":24,"context_line":"            websocket.WebSocketWSGI, \u0027_WSGI_APP_ALWAYS_IDLE\u0027, None)"},{"line_number":25,"context_line":"        # Note this is not a new-style class, so super() won\u0027t work"},{"line_number":26,"context_line":"        wsgi.HttpProtocol.__init__(self, *args, **kwargs)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    @property"},{"line_number":29,"context_line":"    def close_connection(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"0071ed77_68b7de09","line":26,"updated":"2021-07-07 22:02:03.000000000","message":"I don\u0027t think you can do properties with old style classes","commit_id":"96656824d1c6eae5389ee60adbe3f80a37258dfd"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"b489942a7eb44a4e66a357af53a31eb151d97706","unresolved":true,"context_lines":[{"line_number":23,"context_line":"        self.pre_shutdown_bugfix_eventlet \u003d not getattr("},{"line_number":24,"context_line":"            websocket.WebSocketWSGI, \u0027_WSGI_APP_ALWAYS_IDLE\u0027, None)"},{"line_number":25,"context_line":"        # Note this is not a new-style class, so super() won\u0027t work"},{"line_number":26,"context_line":"        wsgi.HttpProtocol.__init__(self, *args, **kwargs)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    @property"},{"line_number":29,"context_line":"    def close_connection(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"a4beaf58_6022d6f4","line":26,"in_reply_to":"0071ed77_68b7de09","updated":"2021-07-07 22:07:20.000000000","message":"🤮","commit_id":"96656824d1c6eae5389ee60adbe3f80a37258dfd"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"97f0019c0a494461fc6534daff9a3f5855601490","unresolved":true,"context_lines":[{"line_number":23,"context_line":"        self.pre_shutdown_bugfix_eventlet \u003d not getattr("},{"line_number":24,"context_line":"            websocket.WebSocketWSGI, \u0027_WSGI_APP_ALWAYS_IDLE\u0027, None)"},{"line_number":25,"context_line":"        # Note this is not a new-style class, so super() won\u0027t work"},{"line_number":26,"context_line":"        wsgi.HttpProtocol.__init__(self, *args, **kwargs)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    @property"},{"line_number":29,"context_line":"    def close_connection(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"f79a1e94_3d23ebd1","line":26,"in_reply_to":"a4beaf58_6022d6f4","updated":"2025-03-06 02:12:20.000000000","message":"py2 is dead! No more old-style classes! I should revisit this.","commit_id":"96656824d1c6eae5389ee60adbe3f80a37258dfd"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"e94d28276a9fa15d57beaea206458bc0eb89efa1","unresolved":true,"context_lines":[{"line_number":26,"context_line":"        wsgi.HttpProtocol.__init__(self, *args, **kwargs)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    @property"},{"line_number":29,"context_line":"    def close_connection(self):"},{"line_number":30,"context_line":"        return LOCALS.close_connection"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @close_connection.setter"}],"source_content_type":"text/x-python","patch_set":1,"id":"d5c2cba7_b1f23ccf","line":29,"updated":"2021-07-07 22:02:03.000000000","message":"I think we will also most of the time have the in-flight requests\u0027s env available as self.environ","commit_id":"96656824d1c6eae5389ee60adbe3f80a37258dfd"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"b489942a7eb44a4e66a357af53a31eb151d97706","unresolved":true,"context_lines":[{"line_number":26,"context_line":"        wsgi.HttpProtocol.__init__(self, *args, **kwargs)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    @property"},{"line_number":29,"context_line":"    def close_connection(self):"},{"line_number":30,"context_line":"        return LOCALS.close_connection"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @close_connection.setter"}],"source_content_type":"text/x-python","patch_set":1,"id":"8964feba_b47c317f","line":29,"in_reply_to":"d5c2cba7_b1f23ccf","updated":"2021-07-07 22:07:20.000000000","message":"But how should we deal with subrequests? 🤔","commit_id":"96656824d1c6eae5389ee60adbe3f80a37258dfd"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"e94d28276a9fa15d57beaea206458bc0eb89efa1","unresolved":true,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    @property"},{"line_number":29,"context_line":"    def close_connection(self):"},{"line_number":30,"context_line":"        return LOCALS.close_connection"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @close_connection.setter"},{"line_number":33,"context_line":"    def close_connection(self, value):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1675769f_032a0b6c","line":30,"updated":"2021-07-07 22:02:03.000000000","message":"so this is part of the eventlet.wsgi interface - it\u0027s reading this to see if it should close the connection","commit_id":"96656824d1c6eae5389ee60adbe3f80a37258dfd"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"775c34ebebf3498282ffe47faeea01b608891ecb","unresolved":true,"context_lines":[{"line_number":162,"context_line":"        if self.pre_shutdown_bugfix_eventlet:"},{"line_number":163,"context_line":"            if self.conn_state[2] !\u003d wsgi.STATE_CLOSE:"},{"line_number":164,"context_line":"                self.conn_state[2] \u003d wsgi.STATE_IDLE"},{"line_number":165,"context_line":"        return got"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"class SwiftHttpProxiedProtocol(SwiftHttpProtocol):"}],"source_content_type":"text/x-python","patch_set":1,"id":"cc84d25c_9c5e7aca","line":165,"updated":"2022-04-25 17:57:30.000000000","message":"Instead of the @property stuff, we could probably do something like\n\n LOCALS.close_connection \u003d False\n # Note this is not a new-style class, so super() won\u0027t work\n got \u003d wsgi.HttpProtocol.handle_one_request(self)\n # expect that callers may have updated LOCALS.close_connection\n if LOCALS.close_connection and not self.close_connection:\n     self.close_connection \u003d LOCALS.close_connection\n ...\n\nhere.","commit_id":"96656824d1c6eae5389ee60adbe3f80a37258dfd"}]}
