Skip to content

ElementX fails to preview/navigate to new rooms via links due to missing /v1/room_summary endpoint and subsequent 403/400 errors #470

Description

@utop-top

Environment
Server Implementation: Tuwunel
Client Implementation: ElementX (iOS / Android)
Reverse Proxy: HAProxy
Description
When a user clicks a room link (e.g., a room upgrade link redirected via m.room.tombstone or a specific internal room link matrix structure) to navigate to a room they haven't joined yet, ElementX gets stuck in an infinite retry loop, flashing alert dialogs continuously.
An investigation via HAProxy tracking logs shows that the issue stems from a combination of unimplemented endpoints and permission handling in Tuwunel when encountering unjoined rooms.
HAProxy Log Evidence
Plaintext

1. Missing endpoint for room preview

bk_matrix_tuwunel/s1 ... 404 ... "GET /_matrix/client/v1/room_summary/!CsRxv6JBvOzBVdjIgYlQrYbZYc1AIGfLhCPI1XE3gks?via=cst.sns.com&via=v.tcz.io HTTP/2.0"

2. Authorization rejected when client falls back to fetching room metadata

bk_matrix_tuwunel/s1 ... 403 ... "GET /_matrix/client/v3/rooms/!CsRxv6JBvOzBVdjIgYlQrYbZYc1AIGfLhCPI1XE3gks/state HTTP/2.0"
bk_matrix_tuwunel/s1 ... 403 ... "GET /_matrix/client/v3/rooms/!CsRxv6JBvOzBVdjIgYlQrYbZYc1AIGfLhCPI1XE3gks/joined_members HTTP/2.0"

3. Bad Request when attempting to poll publicRooms from federation via server query

bk_matrix_tuwunel/s1 ... 400 ... "POST /_matrix/client/v3/publicRooms?server=v.tcz.io HTTP/2.0"
Root Cause Analysis
/_matrix/client/v1/room_summary/... returns 404 Not Found: ElementX strictly relies on this client-server endpoint to render room previews prior to joining. Tuwunel currently lacks implementation for this router.
/state and /joined_members return 403 Forbidden: Because the client fails to obtain the room summary, it attempts to fall back to older endpoints. However, since the user is not yet a member of the target room, the server correctly (but obstructively for this use case) denies access with a 403.
Federated publicRooms query returns 400 Bad Request: The server errors out when attempting to proxy the public directory request to the remote home server specified in the via parameter (v.tcz.io).
This cascading failure deprives ElementX of any structural metadata regarding the target replacement room, inducing a UI-handling panic and the infinite request loop.
Expected Behavior
The server should implement the /_matrix/client/v1/room_summary/* endpoint according to the Spec, allowing non-members to retrieve basic context (such as room name, avatar, and join rules) for navigation and preview validation, avoiding unexpected 404/403 blockades.

Metadata

Metadata

Assignees

No one assigned

    Labels

    client compatProblem with client-server interaction. Issue is preventing a client from working.needs confirmationIssue has not been reproduced by developers or confirmed with actionable basis for investigation.

    Type

    Fields

    No fields configured for Bug.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions