Skip to content
Snippets Groups Projects
Unverified Commit 0bbbd105 authored by Richard van der Hoff's avatar Richard van der Hoff Committed by GitHub
Browse files

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.
parent d74cdc1a
No related branches found
No related tags found
No related merge requests found
Make worker processes return a stubbed-out response to `GET /presence` requests.
...@@ -26,7 +26,7 @@ from twisted.web.resource import NoResource ...@@ -26,7 +26,7 @@ from twisted.web.resource import NoResource
import synapse import synapse
import synapse.events import synapse.events
from synapse.api.errors import HttpResponseException, SynapseError from synapse.api.errors import SynapseError
from synapse.api.urls import ( from synapse.api.urls import (
CLIENT_API_PREFIX, CLIENT_API_PREFIX,
FEDERATION_PREFIX, FEDERATION_PREFIX,
...@@ -137,31 +137,18 @@ logger = logging.getLogger("synapse.app.generic_worker") ...@@ -137,31 +137,18 @@ logger = logging.getLogger("synapse.app.generic_worker")
class PresenceStatusStubServlet(RestServlet): class PresenceStatusStubServlet(RestServlet):
"""If presence is disabled this servlet can be used to stub out setting """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") PATTERNS = client_patterns("/presence/(?P<user_id>[^/]*)/status")
def __init__(self, hs): def __init__(self, hs):
super(PresenceStatusStubServlet, self).__init__() super(PresenceStatusStubServlet, self).__init__()
self.http_client = hs.get_simple_http_client()
self.auth = hs.get_auth() self.auth = hs.get_auth()
self.main_uri = hs.config.worker_main_http_uri
async def on_GET(self, request, user_id): async def on_GET(self, request, user_id):
# Pass through the auth headers, if any, in case the access token await self.auth.get_user_by_req(request)
# is there. return 200, {"presence": "offline"}
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
async def on_PUT(self, request, user_id): async def on_PUT(self, request, user_id):
await self.auth.get_user_by_req(request) await self.auth.get_user_by_req(request)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment