Ensure the upstream is online before asking for terms

This commit is contained in:
Travis Ralston 2019-08-03 12:40:43 -06:00
parent c52d9f3907
commit 3831f2f7bc

View File

@ -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