You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Apr 26, 2024. It is now read-only.
Repository navigation
This repository was archived by the owner on Apr 26, 2024. It is now read-only.
/publicRooms causes internal server error if the server parameter matches the homeserver domain #6325
When calling the /_matrix/client/r0/publicRooms endpoint with a server parameter within a server's domain, the server experiences an internal error, e.g.:
curl --request POST --header "Content-Type: application/json" --data '{"limit":20,"include_all_networks":true}' "https://matrix.domain.tld/_matrix/client/r0/publicRooms?server=something.domain.tld&access_token=<le_token>
On the server, this results in the following homeserver.log:
2019-11-04 19:52:26,074 - synapse.http.server - 109 - ERROR - POST-705775- Failed handle request via 'PublicRoomListRestServlet': <XForwardedForRequest at 0x80e5ef048 method='POST' uri='/_matrix/client/r0/publicRooms?server=domain.tld&access_token=<redacted>' clientproto='HTTP/1.1' site=8008>
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/synapse/http/server.py", line 77, in wrapped_request_handler
await h(self, request)
File "/usr/local/lib/python3.6/site-packages/synapse/http/server.py", line 326, in _async_render
callback_return = await callback_return
File "/usr/local/lib/python3.6/site-packages/synapse/rest/client/v1/room.py", line 417, in on_POST
third_party_instance_id=third_party_instance_id,
File "/usr/local/lib/python3.6/site-packages/twisted/internet/defer.py", line 1418, in _inlineCallbacks
result = g.send(result)
File "/usr/local/lib/python3.6/site-packages/synapse/handlers/room_list.py", line 391, in get_remote_public_room_list
third_party_instance_id=third_party_instance_id,
File "/usr/local/lib/python3.6/site-packages/synapse/handlers/room_list.py", line 441, in _get_remote_list_cached
third_party_instance_id=third_party_instance_id,
File "/usr/local/lib/python3.6/site-packages/synapse/util/caches/response_cache.py", line 151, in wrap
result = self.set(key, d)
File "/usr/local/lib/python3.6/site-packages/synapse/util/caches/response_cache.py", line 95, in set
result = ObservableDeferred(deferred, consumeErrors=True)
File "/usr/local/lib/python3.6/site-packages/synapse/util/async_helpers.py", line 87, in __init__
deferred.addCallbacks(callback, errback)
AttributeError: 'NoneType' object has no attribute 'addCallbacks'
This does not cause synapse to crash, but at least causes the explore room functionality in riot to stop working. It also doesn't matter if a subdomain exists or not, or if the server domain name itself is used.
Steps to reproduce
obtain access_token or add server explicitly to room list in riot
call the API endpoint (as outlined above) or use riot's explore feature and navigate to that server entry
Version information
Version: 1.5.0 and 1.4.1
Install method: FreeBSD packages as well as on Debian via matrix.org repo
Activity
anoadragon453 commentedon Apr 6, 2020
Fixed by #6899