From e6b0d4a1ae4d9ff402f6758a035829f655734d72 Mon Sep 17 00:00:00 2001 From: myselfsatyam Date: Fri, 10 Oct 2025 12:09:50 +0530 Subject: [PATCH 1/2] #271 done fgetser --- .../src/services/federation.service.ts | 14 ++++++++++---- test-federation-fix.js | 1 + 2 files changed, 11 insertions(+), 4 deletions(-) create mode 100644 test-federation-fix.js diff --git a/packages/federation-sdk/src/services/federation.service.ts b/packages/federation-sdk/src/services/federation.service.ts index 7fed0c33..c2d577c6 100644 --- a/packages/federation-sdk/src/services/federation.service.ts +++ b/packages/federation-sdk/src/services/federation.service.ts @@ -237,10 +237,16 @@ export class FederationService { const servers = await this.stateService.getServerSetInRoom(event.roomId); if (event.stateKey) { - const server = extractDomainFromId(event.stateKey); - // TODO: fgetser - if (!servers.has(server)) { - servers.add(server); + try { + const server = extractDomainFromId(event.stateKey); + if (server && !servers.has(server)) { + servers.add(server); + } + } catch (error) { + this.logger.error( + { error, eventId: event.eventId, stateKey: event.stateKey }, + 'Failed to extract server from stateKey', + ); } } diff --git a/test-federation-fix.js b/test-federation-fix.js new file mode 100644 index 00000000..0519ecba --- /dev/null +++ b/test-federation-fix.js @@ -0,0 +1 @@ + \ No newline at end of file From 33fb2a62f51da915fdd853a41747b195cf7548fd Mon Sep 17 00:00:00 2001 From: myselfsatyam Date: Fri, 10 Oct 2025 12:20:51 +0530 Subject: [PATCH 2/2] #removed this #264 --- packages/federation-sdk/src/services/state.service.ts | 10 ---------- .../src/controllers/internal/room.controller.ts | 6 +++++- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/packages/federation-sdk/src/services/state.service.ts b/packages/federation-sdk/src/services/state.service.ts index 15c49818..5d146128 100644 --- a/packages/federation-sdk/src/services/state.service.ts +++ b/packages/federation-sdk/src/services/state.service.ts @@ -1118,16 +1118,6 @@ export class StateService { return this.getStateAtStateId(stateId, event.version); } - // TODO: remove this - async findStateAtEvent(eventId: EventID) { - const event = await this.getEvent(eventId); - if (!event) { - throw new Error(`EVent ${eventId} not found`); - } - - return this.getStateAtEvent(event); - } - async getAllPublicRoomIdsAndNames() { const createEvents = await this.eventRepository.findByType('m.room.create'); diff --git a/packages/homeserver/src/controllers/internal/room.controller.ts b/packages/homeserver/src/controllers/internal/room.controller.ts index 52def1a6..0127a878 100644 --- a/packages/homeserver/src/controllers/internal/room.controller.ts +++ b/packages/homeserver/src/controllers/internal/room.controller.ts @@ -200,7 +200,11 @@ export const internalRoomPlugin = (app: Elysia) => { async ({ params, query }) => { const eventId = query.event_id; if (eventId) { - const room = await stateService.findStateAtEvent(eventId as EventID); + const event = await stateService.getEvent(eventId as EventID); + if (!event) { + throw new Error(`Event ${eventId} not found`); + } + const room = await stateService.getStateAtEvent(event); const state: Record = {}; for (const [key, value] of room.entries()) { state[key] = value.event;