summary refs log tree commit diff
diff options
context:
space:
mode:
authorRichard van der Hoff <1389908+richvdh@users.noreply.github.com>2020-05-21 14:36:46 +0100
committerGitHub <noreply@github.com>2020-05-21 14:36:46 +0100
commit0bbbd10513008d30c17eb1d1e7ba1d091fb44ec7 (patch)
treedf2f9d8e41855270310fabc7cde7e2f9e09c9fb2
parentEnsure worker config exists in systemd service (#7528) (diff)
downloadsynapse-0bbbd10513008d30c17eb1d1e7ba1d091fb44ec7.tar.xz
Stub out GET presence requests in the frontend proxy (#7545)
We don't really make any promises about returning accurate presence data when
presence is disabled, so we may as well just return a static response, rather
than making the master handle a request.
-rw-r--r--changelog.d/7545.misc1
-rw-r--r--synapse/app/generic_worker.py21
2 files changed, 5 insertions, 17 deletions
diff --git a/changelog.d/7545.misc b/changelog.d/7545.misc
new file mode 100644
index 0000000000..177ec883e2
--- /dev/null
+++ b/changelog.d/7545.misc
@@ -0,0 +1 @@
+Make worker processes return a stubbed-out response to `GET /presence` requests.
diff --git a/synapse/app/generic_worker.py b/synapse/app/generic_worker.py
index 506b70443b..d751c9772b 100644
--- a/synapse/app/generic_worker.py
+++ b/synapse/app/generic_worker.py
@@ -26,7 +26,7 @@ from twisted.web.resource import NoResource
 
 import synapse
 import synapse.events
-from synapse.api.errors import HttpResponseException, SynapseError
+from synapse.api.errors import SynapseError
 from synapse.api.urls import (
     CLIENT_API_PREFIX,
     FEDERATION_PREFIX,
@@ -137,31 +137,18 @@ logger = logging.getLogger("synapse.app.generic_worker")
 
 class PresenceStatusStubServlet(RestServlet):
     """If presence is disabled this servlet can be used to stub out setting
-    presence status, while proxying the getters to the master instance.
+    presence status.
     """
 
     PATTERNS = client_patterns("/presence/(?P<user_id>[^/]*)/status")
 
     def __init__(self, hs):
         super(PresenceStatusStubServlet, self).__init__()
-        self.http_client = hs.get_simple_http_client()
         self.auth = hs.get_auth()
-        self.main_uri = hs.config.worker_main_http_uri
 
     async def on_GET(self, request, user_id):
-        # Pass through the auth headers, if any, in case the access token
-        # is there.
-        auth_headers = request.requestHeaders.getRawHeaders("Authorization", [])
-        headers = {"Authorization": auth_headers}
-
-        try:
-            result = await self.http_client.get_json(
-                self.main_uri + request.uri.decode("ascii"), headers=headers
-            )
-        except HttpResponseException as e:
-            raise e.to_synapse_error()
-
-        return 200, result
+        await self.auth.get_user_by_req(request)
+        return 200, {"presence": "offline"}
 
     async def on_PUT(self, request, user_id):
         await self.auth.get_user_by_req(request)