From 8843b70adde0504078a53b345ebccb88d8efbb96 Mon Sep 17 00:00:00 2001 From: Matthieu MALVACHE Date: Wed, 25 Feb 2026 12:44:41 +0100 Subject: [PATCH] fix(jmap): use path extraction instead of origin-length slicing for URL rewrite When Stalwart returns session URLs with explicit :443 port, the URL parser normalizes it out but the original string keeps it, causing string slicing to produce wrong offsets. Now extracts the path by finding the first / after // instead of relying on origin length. --- lib/jmap/client.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/jmap/client.ts b/lib/jmap/client.ts index cd7d2d1..a68ab7a 100644 --- a/lib/jmap/client.ts +++ b/lib/jmap/client.ts @@ -212,10 +212,11 @@ export class JMAPClient { private rewriteSessionUrl(url: string): string { try { - const urlOrigin = new URL(url).origin; - const serverOrigin = new URL(this.serverUrl).origin; - if (urlOrigin === serverOrigin) return url; - return serverOrigin + url.slice(urlOrigin.length); + const parsed = new URL(url); + const server = new URL(this.serverUrl); + if (parsed.origin === server.origin) return url; + const pathAndRest = url.slice(url.indexOf('/', url.indexOf('//') + 2)); + return server.origin + pathAndRest; } catch { return url; }