Add a custom override of buildProtocol.

This commit is contained in:
Cory Benfield 2016-11-18 10:15:16 +00:00 committed by Andrew Godwin
parent d86d7dd3c4
commit d3f26a6bf2

View File

@ -283,11 +283,6 @@ class WebRequest(http.Request):
}) })
class HTTPProtocol(http.HTTPChannel):
requestFactory = WebRequest
class HTTPFactory(http.HTTPFactory): class HTTPFactory(http.HTTPFactory):
""" """
Factory which takes care of tracking which protocol Factory which takes care of tracking which protocol
@ -296,8 +291,6 @@ class HTTPFactory(http.HTTPFactory):
routed appropriately. routed appropriately.
""" """
protocol = HTTPProtocol
def __init__(self, channel_layer, action_logger=None, timeout=120, websocket_timeout=86400, ping_interval=20, ping_timeout=30, ws_protocols=None, root_path="", websocket_connect_timeout=30, proxy_forwarded_address_header=None, proxy_forwarded_port_header=None): def __init__(self, channel_layer, action_logger=None, timeout=120, websocket_timeout=86400, ping_interval=20, ping_timeout=30, ws_protocols=None, root_path="", websocket_connect_timeout=30, proxy_forwarded_address_header=None, proxy_forwarded_port_header=None):
http.HTTPFactory.__init__(self) http.HTTPFactory.__init__(self)
self.channel_layer = channel_layer self.channel_layer = channel_layer
@ -320,6 +313,15 @@ class HTTPFactory(http.HTTPFactory):
self.ws_factory.reply_protocols = self.reply_protocols self.ws_factory.reply_protocols = self.reply_protocols
self.root_path = root_path self.root_path = root_path
def buildProtocol(self, addr):
"""
Builds protocol instances. This override is used to ensure we use our
own Request object instead of the default.
"""
protocol = http.HTTPFactory.buildProtocol(self, addr)
protocol.requestFactory = WebRequest
return protocol
def reply_channels(self): def reply_channels(self):
return self.reply_protocols.keys() return self.reply_protocols.keys()