Sfoglia il codice sorgente

[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 <brian.gough@overleaf.com>

---------

Co-authored-by: Brian Gough <brian.gough@overleaf.com>
GitOrigin-RevId: bd3b6381b68398aac4a07e48cd69e6aa97e94f18
Jakob Ackermann 1 anno fa
parent
commit
e25a69936e

+ 5 - 1
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) {