Skip to content

Commit 81e6824

Browse files
committed
Fix obvious bs
1 parent 15643f8 commit 81e6824

File tree

1 file changed

+16
-9
lines changed

1 file changed

+16
-9
lines changed

src/appservice/Appservice.ts

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -670,7 +670,7 @@ export class Appservice extends EventEmitter {
670670

671671
private async decryptAppserivceEvent(roomId: string, encrypted: EncryptedRoomEvent): ReturnType<Appservice["processEvent"]> {
672672
const existingClient = this.cryptoClientForRoomId.get(roomId);
673-
const decryptFn = async (client) => {
673+
const decryptFn = async (client: MatrixClient) => {
674674
let event = (await client.crypto.decryptRoomEvent(encrypted, roomId)).raw;
675675
event = await this.processEvent(event);
676676
this.cryptoClientForRoomId.set(roomId, client);
@@ -682,16 +682,18 @@ export class Appservice extends EventEmitter {
682682
if (existingClient) {
683683
try {
684684
return await decryptFn(existingClient);
685-
} catch (existingClientError) {
685+
} catch (error) {
686+
LogService.debug("Appservice", `Failed to decrypt via cached client ${await existingClient.getUserId()}`, error);
686687
LogService.warn("Appservice", `Cached client was not able to decrypt ${roomId} ${encrypted.eventId} - trying other intents`);
687688
}
688689
}
689690
this.cryptoClientForRoomId.delete(roomId);
690691
// 2. Try the bot client
691692
if (this.botClient.crypto?.isReady) {
692693
try {
693-
return await decryptFn(existingClient);
694-
} catch (ex) {
694+
return await decryptFn(this.botClient);
695+
} catch (error) {
696+
LogService.debug("Appservice", `Failed to decrypt via bot client`, error);
695697
LogService.warn("Appservice", `Bot client was not able to decrypt ${roomId} ${encrypted.eventId} - trying other intents`);
696698
}
697699
}
@@ -709,19 +711,24 @@ export class Appservice extends EventEmitter {
709711
continue;
710712
}
711713
try {
712-
return await decryptFn(existingClient);
713-
} catch (existingClientError) {
714+
return await decryptFn(intent.underlyingClient);
715+
} catch (error) {
716+
LogService.debug("Appservice", `Failed to decrypt via ${userId}`, error);
714717
LogService.warn("Appservice", `Existing encrypted client was not able to decrypt ${roomId} ${encrypted.eventId} - trying other intents`);
715718
}
716719
}
717720

718721
// 4. Try to enable crypto on any client to decrypt it.
719722
const userInRoom = this.intentsCache.find((_intent, userId) => userIdsInRoom.includes(userId));
723+
if (!userInRoom) {
724+
throw Error('No users in room, cannot decrypt');
725+
}
720726
await userInRoom.enableEncryption();
721727
try {
722-
return await decryptFn(existingClient);
723-
} catch (existingClientError) {
724-
throw new Error("Unable to decrypt event", { cause: existingClient });
728+
return await decryptFn(userInRoom.underlyingClient);
729+
} catch (error) {
730+
LogService.debug("Appservice", `Failed to decrypt via random user ${userInRoom.userId}`, error);
731+
throw new Error("Unable to decrypt event", { cause: error });
725732
}
726733
}
727734

0 commit comments

Comments
 (0)