summary refs log tree commit diff
path: root/packages/overlays/matrix-synapse/patches/0002-Add-too-much-logging-to-room-summary-over-federation.patch
blob: 844182395594851c6c3795d5ab94a78c4a0988c3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
From 12f5c44e7d1cedc9f11402fc5c06ce54a8c24915 Mon Sep 17 00:00:00 2001
From: Rory& <root@rory.gay>
Date: Wed, 23 Apr 2025 17:53:52 +0200
Subject: [PATCH 02/10] Add too much logging to room summary over federation

Signed-off-by: Rory& <root@rory.gay>
---
 synapse/handlers/room_summary.py | 40 ++++++++++++++++++++++++++++----
 1 file changed, 36 insertions(+), 4 deletions(-)

diff --git a/synapse/handlers/room_summary.py b/synapse/handlers/room_summary.py
index 91b131d09b..6e64930682 100644
--- a/synapse/handlers/room_summary.py
+++ b/synapse/handlers/room_summary.py
@@ -700,23 +700,55 @@ class RoomSummaryHandler:
         """
         # The API doesn't return the room version so assume that a
         # join rule of knock is valid.
+        join_rule = room.get("join_rule")
+        world_readable = room.get("world_readable")
+
+        logger.warning(
+            "[EMMA] Checking if room %s is accessible to %s: join_rule=%s, world_readable=%s",
+            room_id, requester, join_rule, world_readable
+        )
+
         if (
-            room.get("join_rule", JoinRules.PUBLIC)
-            in (JoinRules.PUBLIC, JoinRules.KNOCK, JoinRules.KNOCK_RESTRICTED)
-            or room.get("world_readable") is True
+            join_rule in (JoinRules.PUBLIC, JoinRules.KNOCK, JoinRules.KNOCK_RESTRICTED)
+            or world_readable is True
         ):
             return True
-        elif not requester:
+        else:
+            logger.warning(
+                "[EMMA] Room %s is not accessible to %s: join_rule=%s, world_readable=%s, join_rule result=%s, world_readable result=%s",
+                room_id, requester, join_rule, world_readable,
+                join_rule in (JoinRules.PUBLIC, JoinRules.KNOCK, JoinRules.KNOCK_RESTRICTED),
+                world_readable is True
+            )
+
+        if not requester:
+            logger.warning(
+                "[EMMA] No requester, so room %s is not accessible",
+                room_id
+            )
             return False
+        
 
         # Check if the user is a member of any of the allowed rooms from the response.
         allowed_rooms = room.get("allowed_room_ids")
+        logger.warning(
+            "[EMMA] Checking if room %s is in allowed rooms for %s: join_rule=%s, allowed_rooms=%s",
+            requester,
+            room_id,
+            join_rule,
+            allowed_rooms
+        )
         if allowed_rooms and isinstance(allowed_rooms, list):
             if await self._event_auth_handler.is_user_in_rooms(
                 allowed_rooms, requester
             ):
                 return True
 
+        logger.warning(
+            "[EMMA] Checking if room %s is accessble to %s via local state",
+            room_id,
+            requester
+        )
         # Finally, check locally if we can access the room. The user might
         # already be in the room (if it was a child room), or there might be a
         # pending invite, etc.
-- 
2.49.0