From 6765d5ad26d6fe75652f719daddd360cc6968a5a Mon Sep 17 00:00:00 2001 From: Owen Date: Mon, 19 Jan 2026 16:30:34 -0800 Subject: [PATCH] Reorder setting the olm agent and version --- .../routers/olm/handleOlmRegisterMessage.ts | 75 +++++++++++-------- 1 file changed, 45 insertions(+), 30 deletions(-) diff --git a/server/routers/olm/handleOlmRegisterMessage.ts b/server/routers/olm/handleOlmRegisterMessage.ts index 4e3d29f6..f21705dd 100644 --- a/server/routers/olm/handleOlmRegisterMessage.ts +++ b/server/routers/olm/handleOlmRegisterMessage.ts @@ -69,21 +69,36 @@ export const handleOlmRegisterMessage: MessageHandler = async (context) => { platformFingerprint: fingerprint.platformFingerprint }); } else { - await db - .update(fingerprints) - .set({ - lastSeen: now, - username: fingerprint.username, - hostname: fingerprint.hostname, - platform: fingerprint.platform, - osVersion: fingerprint.osVersion, - kernelVersion: fingerprint.kernelVersion, - arch: fingerprint.arch, - deviceModel: fingerprint.deviceModel, - serialNumber: fingerprint.serialNumber, - platformFingerprint: fingerprint.platformFingerprint - }) - .where(eq(fingerprints.olmId, olm.olmId)); + const hasChanges = + existingFingerprint.username !== fingerprint.username || + existingFingerprint.hostname !== fingerprint.hostname || + existingFingerprint.platform !== fingerprint.platform || + existingFingerprint.osVersion !== fingerprint.osVersion || + existingFingerprint.kernelVersion !== + fingerprint.kernelVersion || + existingFingerprint.arch !== fingerprint.arch || + existingFingerprint.deviceModel !== fingerprint.deviceModel || + existingFingerprint.serialNumber !== fingerprint.serialNumber || + existingFingerprint.platformFingerprint !== + fingerprint.platformFingerprint; + + if (hasChanges) { + await db + .update(fingerprints) + .set({ + lastSeen: now, + username: fingerprint.username, + hostname: fingerprint.hostname, + platform: fingerprint.platform, + osVersion: fingerprint.osVersion, + kernelVersion: fingerprint.kernelVersion, + arch: fingerprint.arch, + deviceModel: fingerprint.deviceModel, + serialNumber: fingerprint.serialNumber, + platformFingerprint: fingerprint.platformFingerprint + }) + .where(eq(fingerprints.olmId, olm.olmId)); + } } } @@ -110,6 +125,21 @@ export const handleOlmRegisterMessage: MessageHandler = async (context) => { }); } + if ( + (olmVersion && olm.version !== olmVersion) || + (olmAgent && olm.agent !== olmAgent) || + olm.archived + ) { + await db + .update(olms) + .set({ + version: olmVersion, + agent: olmAgent, + archived: false + }) + .where(eq(olms.olmId, olm.olmId)); + } + const [client] = await db .select() .from(clients) @@ -237,21 +267,6 @@ export const handleOlmRegisterMessage: MessageHandler = async (context) => { return; } - if ( - (olmVersion && olm.version !== olmVersion) || - (olmAgent && olm.agent !== olmAgent) || - olm.archived - ) { - await db - .update(olms) - .set({ - version: olmVersion, - agent: olmAgent, - archived: false - }) - .where(eq(olms.olmId, olm.olmId)); - } - if (client.pubKey !== publicKey || client.archived) { logger.info( "Public key mismatch. Updating public key and clearing session info..."