Skip to content

Commit dd6ace8

Browse files
committed
chore: early checks and bring handlePdu back
1 parent e6bd156 commit dd6ace8

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
@@ -95,6 +95,8 @@ export class InviteService {
9595

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

152154
private async shouldProcessInvite(
153-
strippedStateEvents:
154-
| 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-
>[]
163-
| undefined,
155+
strippedStateEvents: PduForType<
156+
| 'm.room.create'
157+
| 'm.room.name'
158+
| 'm.room.avatar'
159+
| 'm.room.topic'
160+
| 'm.room.join_rules'
161+
| 'm.room.canonical_alias'
162+
| 'm.room.encryption'
163+
>[],
164164
): Promise<void> {
165-
if (!strippedStateEvents || strippedStateEvents.length === 0) {
166-
throw new Error(
167-
'Missing invite_room_state required for policy validation',
168-
);
169-
}
170-
171165
const isRoomNonPrivate = strippedStateEvents.some(
172166
(stateEvent) =>
173167
stateEvent.type === 'm.room.join_rules' &&
@@ -196,8 +190,12 @@ export class InviteService {
196190
eventId: EventID,
197191
roomVersion: RoomVersion,
198192
): Promise<PersistentEventBase<RoomVersion, 'm.room.member'>> {
199-
// 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
200-
await this.shouldProcessInvite(event.unsigned?.invite_room_state);
193+
if (!event.unsigned?.invite_room_state) {
194+
throw new Error(
195+
'Missing invite_room_state required for policy validation',
196+
);
197+
}
198+
await this.shouldProcessInvite(event.unsigned.invite_room_state);
201199

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

0 commit comments

Comments
 (0)