send the aliases when connecting for the first time

This commit is contained in:
Owen
2026-08-04 14:23:25 -04:00
parent 973925b35d
commit 9811492a0b
+20 -2
View File
@@ -1116,7 +1116,8 @@ async function syncClientExitNodeConnections(
const requiresExitNodeRows = await trx const requiresExitNodeRows = await trx
.select({ .select({
clientId: clientSiteResourcesAssociationsCache.clientId clientId: clientSiteResourcesAssociationsCache.clientId,
alias: siteResources.alias
}) })
.from(clientSiteResourcesAssociationsCache) .from(clientSiteResourcesAssociationsCache)
.innerJoin( .innerJoin(
@@ -1141,6 +1142,20 @@ async function syncClientExitNodeConnections(
requiresExitNodeRows.map((r) => r.clientId) requiresExitNodeRows.map((r) => r.clientId)
); );
// Aliases for every exit-node-backed resource this client can reach, so
// the live connect push carries the same alias list the register/reconnect
// path (buildSiteConfigurationForOlmClient) would compute.
const exitNodeAliasesByClientId = new Map<number, string[]>();
for (const row of requiresExitNodeRows) {
if (row.alias == null) continue;
const existing = exitNodeAliasesByClientId.get(row.clientId);
if (existing) {
existing.push(row.alias);
} else {
exitNodeAliasesByClientId.set(row.clientId, [row.alias]);
}
}
const exitNodeIds = Array.from( const exitNodeIds = Array.from(
new Set( new Set(
clientsData clientsData
@@ -1215,7 +1230,10 @@ async function syncClientExitNodeConnections(
relayPort, relayPort,
publicKey: exitNode.publicKey, publicKey: exitNode.publicKey,
serverIP: exitNode.address.split("/")[0], serverIP: exitNode.address.split("/")[0],
tunnelIP: client.exitNodeSubnet.split("/")[0] tunnelIP: client.exitNodeSubnet.split("/")[0],
aliases: exitNodeAliasesByClientId.get(
client.clientId
) ?? []
} }
}, },
options: { options: {