From 9849fba97a760aa19c4b94e7f7ac250b84ac9169 Mon Sep 17 00:00:00 2001 From: Ajay Ramachandran Date: Tue, 31 Aug 2021 12:10:23 -0400 Subject: [PATCH] Don't crash if failed to get ip from db --- src/routes/getSkipSegments.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/routes/getSkipSegments.ts b/src/routes/getSkipSegments.ts index dd9cdae..6feaa26 100644 --- a/src/routes/getSkipSegments.ts +++ b/src/routes/getSkipSegments.ts @@ -12,7 +12,7 @@ import { QueryCacher } from "../utils/queryCacher"; import { getReputation } from "../utils/reputation"; -async function prepareCategorySegments(req: Request, videoID: VideoID, category: Category, segments: DBSegment[],cache: SegmentCache = {shadowHiddenSegmentIPs: {}}): Promise { +async function prepareCategorySegments(req: Request, videoID: VideoID, category: Category, segments: DBSegment[], cache: SegmentCache = {shadowHiddenSegmentIPs: {}}): Promise { const shouldFilter: boolean[] = await Promise.all(segments.map(async (segment) => { if (segment.votes < -1 && !segment.required) { return false; //too untrustworthy, just ignore it @@ -26,19 +26,19 @@ async function prepareCategorySegments(req: Request, videoID: VideoID, category: if (cache.shadowHiddenSegmentIPs[videoID] === undefined) cache.shadowHiddenSegmentIPs[videoID] = {}; if (cache.shadowHiddenSegmentIPs[videoID][segment.timeSubmitted] === undefined) { - cache.shadowHiddenSegmentIPs[videoID][segment.timeSubmitted] = await privateDB.prepare("all", 'SELECT "hashedIP" FROM "sponsorTimes" WHERE "videoID" = ? AND "timeSubmitted" = ?', + cache.shadowHiddenSegmentIPs[videoID][segment.timeSubmitted] = await privateDB.prepare("all", 'SELECT "hashedIP" FROM "sponsorTimes" WHERE "videoID" = ? AND "timeSubmitted" = ?', [videoID, segment.timeSubmitted]) as { hashedIP: HashedIP }[]; } //if this isn't their ip, don't send it to them - return cache.shadowHiddenSegmentIPs[videoID][segment.timeSubmitted].some((shadowHiddenSegment) => { + return cache.shadowHiddenSegmentIPs[videoID][segment.timeSubmitted]?.some((shadowHiddenSegment) => { if (cache.userHashedIP === undefined) { //hash the IP only if it's strictly necessary cache.userHashedIP = getHash((getIP(req) + config.globalSalt) as IPAddress); } return shadowHiddenSegment.hashedIP === cache.userHashedIP; - }); + }) ?? false; })); const filteredSegments = segments.filter((_, index) => shouldFilter[index]);