diff options
author | Richard van der Hoff <richard@matrix.org> | 2018-05-10 18:46:59 +0100 |
---|---|---|
committer | Richard van der Hoff <richard@matrix.org> | 2018-05-10 18:50:27 +0100 |
commit | 318711e1399da009910c3a9e5fa297c28a2d0a97 (patch) | |
tree | 2fac172d40559f54fa2a349216e79548a5e0781e /synapse/http/site.py | |
parent | Merge pull request #3203 from matrix-org/rav/refactor_request_handler (diff) | |
download | synapse-318711e1399da009910c3a9e5fa297c28a2d0a97.tar.xz |
Set Server header in SynapseRequest
(instead of everywhere that writes a response. Or rather, the subset of places which write responses where we haven't forgotten it). This also means that we don't have to have the mysterious version_string attribute in anything with a request handler. Unfortunately it does mean that we have to pass the version string wherever we instantiate a SynapseSite, which has been c&ped 150 times, but that is code that ought to be cleaned up anyway really.
Diffstat (limited to 'synapse/http/site.py')
-rw-r--r-- | synapse/http/site.py | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/synapse/http/site.py b/synapse/http/site.py index bfd9832aa0..202a990508 100644 --- a/synapse/http/site.py +++ b/synapse/http/site.py @@ -77,6 +77,11 @@ class SynapseRequest(Request): def get_user_agent(self): return self.requestHeaders.getRawHeaders(b"User-Agent", [None])[-1] + def render(self, resrc): + # override the Server header which is set by twisted + self.setHeader("Server", self.site.server_version_string) + return Request.render(self, resrc) + def _started_processing(self, servlet_name): self.start_time = int(time.time() * 1000) self.request_metrics = RequestMetrics() @@ -151,6 +156,8 @@ class SynapseRequest(Request): It is possible to update this afterwards by updating self.request_metrics.servlet_name. """ + # TODO: we should probably just move this into render() and finish(), + # to save having to call a separate method. self._started_processing(servlet_name) yield self._finished_processing() @@ -191,7 +198,8 @@ class SynapseSite(Site): Subclass of a twisted http Site that does access logging with python's standard logging """ - def __init__(self, logger_name, site_tag, config, resource, *args, **kwargs): + def __init__(self, logger_name, site_tag, config, resource, + server_version_string, *args, **kwargs): Site.__init__(self, resource, *args, **kwargs) self.site_tag = site_tag @@ -199,6 +207,7 @@ class SynapseSite(Site): proxied = config.get("x_forwarded", False) self.requestFactory = SynapseRequestFactory(self, proxied) self.access_logger = logging.getLogger(logger_name) + self.server_version_string = server_version_string def log(self, request): pass |