summary refs log tree commit diff
diff options
context:
space:
mode:
authorDavid Robertson <davidr@element.io>2022-10-27 10:52:23 +0100
committerGitHub <noreply@github.com>2022-10-27 10:52:23 +0100
commitcbe01ccc3f9c09a0a7233f90200fbcb8ae5245cf (patch)
tree06644d2856fae5841e7f6c2e8830f3f73a55efe9
parentRefactor MSC3030 `/timestamp_to_event` to move away from our snowflake pull f... (diff)
downloadsynapse-cbe01ccc3f9c09a0a7233f90200fbcb8ae5245cf.tar.xz
Reject history insertion during partial joins (#14291)
-rw-r--r--changelog.d/14291.bugfix1
-rw-r--r--synapse/rest/client/room_batch.py7
2 files changed, 8 insertions, 0 deletions
diff --git a/changelog.d/14291.bugfix b/changelog.d/14291.bugfix
new file mode 100644
index 0000000000..bac5065e94
--- /dev/null
+++ b/changelog.d/14291.bugfix
@@ -0,0 +1 @@
+Prevent history insertion ([MSC2716](https://github.com/matrix-org/matrix-spec-proposals/pull/2716)) during an partial join ([MSC3706](https://github.com/matrix-org/matrix-spec-proposals/pull/3706)).
diff --git a/synapse/rest/client/room_batch.py b/synapse/rest/client/room_batch.py
index dd91dabedd..10be4a781b 100644
--- a/synapse/rest/client/room_batch.py
+++ b/synapse/rest/client/room_batch.py
@@ -108,6 +108,13 @@ class RoomBatchSendEventRestServlet(RestServlet):
                 errcode=Codes.MISSING_PARAM,
             )
 
+        if await self.store.is_partial_state_room(room_id):
+            raise SynapseError(
+                HTTPStatus.BAD_REQUEST,
+                "Cannot insert history batches until we have fully joined the room",
+                errcode=Codes.UNABLE_DUE_TO_PARTIAL_STATE,
+            )
+
         # Verify the batch_id_from_query corresponds to an actual insertion event
         # and have the batch connected.
         if batch_id_from_query: