element-hq / element-hq/synapse

leave events do not correctly propagate over federation, if there are missing events

Open
#12,569 0 comments 0 reactions 0 assignees View on GitHub
A-Federation A-Leave S-Minor T-Defect
Dominant language
Python
Stars
4.6k
Forks
600
Avg merge
5d 22h
Merged PRs (30d)
51

Description

This issue has been migrated from [#12569](https://github.com/matrix-org/synapse/issues/12569).

---

Suppose Alice is the only user in a room on her server.

She decides to leave that room, and creates a leave event, which refers to whatever the current backwards extremities are. That event gets sent out over federation.

A recipient server happens not to have one of those backwards extremities, so asks Alice's server for it via `get_missing_events`. However, Alice's server now believes that there are *no* servers in the room, so responds with a 403 [here](https://github.com/matrix-org/synapse/blob/v1.58.0rc2/synapse/handlers/federation.py#L1125).

The recipient server therefore ignores the leave event:

```
2022-04-27 16:29:38,149 - synapse.federation.federation_server - 1085 - INFO - _process_incoming_pdus_in_room_inner-382277 - handling received PDU in room !haTBqoGqvUMbmwFMVO:matrix.org:
2022-04-27 16:29:38,179 - synapse.handlers.federation_event - 225 - INFO - _process_incoming_pdus_in_room_inner-382277-$165107697748XNotI:sw1v.org - Acquiring room lock to fetch 2 missing prev_events: ['$16429186801QHjzY:synapse-performance-test.lab.element.dev', '$16429403111NlIkb:synapse-performance-test.lab.element.dev']
2022-04-27 16:29:38,179 - synapse.handlers.federation_event - 230 - INFO - _process_incoming_pdus_in_room_inner-382277-$165107697748XNotI:sw1v.org - Acquired room lock to fetch 2 missing prev_events
2022-04-27 16:29:38,198 - synapse.handlers.federation_event - 593 - INFO - _process_incoming_pdus_in_room_inner-382277-$165107697748XNotI:sw1v.org - Requesting missing events between ['$16509745141ITCkh:synapse-performance-test.lab.element.dev', '$16509744290GBXbE:synapse-performance-test.lab.element.dev'] and $165107697748XNotI:sw1v.org
2022-04-27 16:29:38,645 - synapse.http.matrixfederationclient - 600 - INFO - _process_incoming_pdus_in_room_inner-382277-$165107697748XNotI:sw1v.org- - {POST-O-30109} [sw1v.org] Got response headers: 403 Forbidden
2022-04-27 16:29:38,646 - synapse.http.matrixfederationclient - 679 - WARNING - _process_incoming_pdus_in_room_inner-382277-$165107697748XNotI:sw1v.org- - {POST-O-30109} [sw1v.org] Request failed: POST matrix://sw1v.org/_matrix/federation/v1/get_missing_events/%21haTBqoGqvUMbmwFMVO%3Amatrix.org: HttpResponseException('403: Forbidden')
2022-04-27 16:29:38,646 - synapse.handlers.federation_event - 658 - WARNING - _process_incoming_pdus_in_room_inner-382277-$165107697748XNotI:sw1v.org - Failed to get prev_events: 403: Forbidden
2022-04-27 16:29:38,671 - synapse.handlers.federation_event - 263 - WARNING - _process_incoming_pdus_in_room_inner-382277-$165107697748XNotI:sw1v.org - Rejecting: failed to fetch 2 prev events: ['$16429186801QHjzY:synapse-performance-test.lab.element.dev', '$16429403111NlIkb:synapse-performance-test.lab.element.dev']
2022-04-27 16:29:38,671 - synapse.federation.federation_server - 1095 - WARNING - _process_incoming_pdus_in_room_inner-382277 - Error handling PDU $165107697748XNotI:sw1v.org: ERROR 403: Your server isn't divulging details about prev_events referenced in this event.
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.