From ed16bd441014e6d1dabafea90350624bf65fdee8 Mon Sep 17 00:00:00 2001 From: Jakob Ackermann Date: Tue, 13 May 2025 13:54:07 +0100 Subject: [PATCH] [clsi-cache] base64 encode X-All-Files header if needed (#25579) * [clsi-cache] base64 encode X-All-Files header if needed * [clsi-cache] add explicit error check Co-authored-by: Brian Gough --------- Co-authored-by: Brian Gough GitOrigin-RevId: bd3b6381b68398aac4a07e48cd69e6aa97e94f18 --- services/web/app/src/Features/Compile/ClsiCacheHandler.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/services/web/app/src/Features/Compile/ClsiCacheHandler.js b/services/web/app/src/Features/Compile/ClsiCacheHandler.js index 76b5d50f12..c04afd483b 100644 --- a/services/web/app/src/Features/Compile/ClsiCacheHandler.js +++ b/services/web/app/src/Features/Compile/ClsiCacheHandler.js @@ -145,6 +145,10 @@ async function getRedirectWithFallback( } = await fetchRedirectWithResponse(u, { signal, }) + let allFilesRaw = headers.get('X-All-Files') + if (!allFilesRaw.startsWith('[')) { + allFilesRaw = Buffer.from(allFilesRaw, 'base64url').toString() + } // Success, return the cache entry. return { location, @@ -152,7 +156,7 @@ async function getRedirectWithFallback( shard: headers.get('X-Shard') || 'cache', lastModified: new Date(headers.get('X-Last-Modified')), size: parseInt(headers.get('X-Content-Length'), 10), - allFiles: JSON.parse(headers.get('X-All-Files')), + allFiles: JSON.parse(allFilesRaw), } } catch (err) { if (err instanceof RequestFailedError && err.response.status === 404) {