diff --git a/src/api/controllers/TermsController.ts b/src/api/controllers/TermsController.ts index 168dd1a..3de7fb8 100644 --- a/src/api/controllers/TermsController.ts +++ b/src/api/controllers/TermsController.ts @@ -11,6 +11,7 @@ import { LogService } from "matrix-js-snippets"; import { ScalarClient } from "../../scalar/ScalarClient"; import { md5 } from "../../utils/hashing"; import TermsUpstreamRecord from "../../db/models/TermsUpstreamRecord"; +import { ScalarStore } from "../../db/ScalarStore"; export interface ILanguagePolicy { name: string; @@ -98,6 +99,12 @@ export default class TermsController { const upstreamTokens = tokensForUser.filter(t => t.upstream); for (const upstreamToken of upstreamTokens) { try { + const online = await ScalarStore.isUpstreamOnline(upstreamToken.upstream, ScalarClient.KIND_MATRIX_V1); + if (!online) { + LogService.warn("TermsController", `Upstream ${upstreamToken.upstream.id} is offline - skipping terms check`); + continue; + } + const scalarClient = new ScalarClient(upstreamToken.upstream, ScalarClient.KIND_MATRIX_V1); await scalarClient.getAccount(upstreamToken.scalarToken); // 200 OK means we're fine