Skip to content

Commit 814a7e2

Browse files
committed
chore: early checks and bring handlePdu back
1 parent f315e96 commit 814a7e2

File tree

1 file changed

+17
-19
lines changed

1 file changed

+17
-19
lines changed

packages/federation-sdk/src/services/invite.service.ts

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,8 @@ export class InviteService {
9494

9595
// if user invited belongs to our server
9696
if (invitedServer === this.configService.serverName) {
97+
await stateService.handlePdu(inviteEvent);
98+
9799
// let all servers know of this state change
98100
// without it join events will not be processed if /event/{eventId} causes problems
99101
void federationService.sendEventToAllServersInRoom(inviteEvent);
@@ -149,24 +151,16 @@ export class InviteService {
149151
}
150152

151153
private async shouldProcessInvite(
152-
strippedStateEvents:
153-
| PduForType<
154-
| 'm.room.create'
155-
| 'm.room.name'
156-
| 'm.room.avatar'
157-
| 'm.room.topic'
158-
| 'm.room.join_rules'
159-
| 'm.room.canonical_alias'
160-
| 'm.room.encryption'
161-
>[]
162-
| undefined,
154+
strippedStateEvents: PduForType<
155+
| 'm.room.create'
156+
| 'm.room.name'
157+
| 'm.room.avatar'
158+
| 'm.room.topic'
159+
| 'm.room.join_rules'
160+
| 'm.room.canonical_alias'
161+
| 'm.room.encryption'
162+
>[],
163163
): Promise<void> {
164-
if (!strippedStateEvents || strippedStateEvents.length === 0) {
165-
throw new Error(
166-
'Missing invite_room_state required for policy validation',
167-
);
168-
}
169-
170164
const isRoomNonPrivate = strippedStateEvents.some(
171165
(stateEvent) =>
172166
stateEvent.type === 'm.room.join_rules' &&
@@ -195,8 +189,12 @@ export class InviteService {
195189
eventId: EventID,
196190
roomVersion: RoomVersion,
197191
): Promise<PersistentEventBase<RoomVersion, 'm.room.member'>> {
198-
// SPEC: when a user invites another user on a different homeserver, a request to that homeserver to have the event signed and verified must be made
199-
await this.shouldProcessInvite(event.unsigned?.invite_room_state);
192+
if (!event.unsigned?.invite_room_state) {
193+
throw new Error(
194+
'Missing invite_room_state required for policy validation',
195+
);
196+
}
197+
await this.shouldProcessInvite(event.unsigned.invite_room_state);
200198

201199
const inviteEvent =
202200
PersistentEventFactory.createFromRawEvent<'m.room.member'>(

0 commit comments

Comments
 (0)