diff --git a/web/shared-worker/worker/worker-crypto.js b/web/shared-worker/worker/worker-crypto.js --- a/web/shared-worker/worker/worker-crypto.js +++ b/web/shared-worker/worker/worker-crypto.js @@ -762,9 +762,13 @@ initialEncryptedData.message, ); } catch (e) { + session.free(); throw new Error(`error decrypt => ${OLM_ERROR_FLAG} ` + e.message); } + if (existingSession) { + existingSession.session.free(); + } contentSessions[contentIdentityKeys.ed25519] = { session, version: sessionVersion, @@ -809,6 +813,9 @@ ); const newSessionVersion = existingSession ? existingSession.version + 1 : 1; + if (existingSession) { + existingSession.session.free(); + } contentSessions[contentIdentityKeys.ed25519] = { session, version: newSessionVersion, @@ -999,6 +1006,7 @@ getAccountPrekeysSet(contentAccount); if (!notifPrekeySignature || !contentPrekeySignature) { + notifsCryptoAccount.notificationAccount.free(); throw new Error('Prekey signature is missing'); }