From 487910487dabf570b438e69eb26d0d5cb4cf383f Mon Sep 17 00:00:00 2001 From: ercoppa Date: Tue, 2 Jun 2026 18:41:05 +0200 Subject: [PATCH 1/6] FIX: generateGerbilConfig hardcoded the WireGuard listen port to 51820 and never sent a relay port --- server/routers/gerbil/getConfig.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/server/routers/gerbil/getConfig.ts b/server/routers/gerbil/getConfig.ts index 6f5eb8785..bd57eae39 100644 --- a/server/routers/gerbil/getConfig.ts +++ b/server/routers/gerbil/getConfig.ts @@ -20,6 +20,7 @@ const getConfigSchema = z.object({ export type GetConfigResponse = { listenPort: number; + relayPort: number; ipAddress: string; peers: { publicKey: string | null; @@ -142,7 +143,10 @@ export async function generateGerbilConfig(exitNode: ExitNode) { peers = [...sitePeers, ...clientPeers]; const configResponse: GetConfigResponse = { - listenPort: exitNode.listenPort || 51820, + listenPort: + exitNode.listenPort || + config.getRawConfig().gerbil.start_port, + relayPort: config.getRawConfig().gerbil.clients_start_port, ipAddress: exitNode.address, peers }; From cff796fabe98e19b4f92ca603d0758997a40ab82 Mon Sep 17 00:00:00 2001 From: TiltedTeapot Date: Thu, 17 Sep 2026 08:13:35 -0600 Subject: [PATCH 2/6] Added relayPort to exitNodes in db --- server/db/sqlite/schema/schema.ts | 1 + server/routers/gerbil/createExitNode.ts | 2 ++ server/routers/gerbil/getConfig.ts | 6 ++---- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/server/db/sqlite/schema/schema.ts b/server/db/sqlite/schema/schema.ts index a2c2339aa..d3c160df9 100644 --- a/server/db/sqlite/schema/schema.ts +++ b/server/db/sqlite/schema/schema.ts @@ -481,6 +481,7 @@ export const exitNodes = sqliteTable("exitNodes", { endpoint: text("endpoint").notNull(), // this is how to reach gerbil externally - gets put into the wireguard config publicKey: text("publicKey").notNull(), listenPort: integer("listenPort").notNull(), + relayPort: integer("listenPort").notNull(), reachableAt: text("reachableAt"), // this is the internal address of the gerbil http server for command control maxConnections: integer("maxConnections"), online: integer("online", { mode: "boolean" }).notNull().default(false), diff --git a/server/routers/gerbil/createExitNode.ts b/server/routers/gerbil/createExitNode.ts index 4fc4e989f..83f33cf32 100644 --- a/server/routers/gerbil/createExitNode.ts +++ b/server/routers/gerbil/createExitNode.ts @@ -16,6 +16,7 @@ export async function createExitNode( const { value: address, release } = await getNextAvailableSubnet(); try { const listenPort = config.getRawConfig().gerbil.start_port; + const relayPort = config.getRawConfig().gerbil.clients_start_port; const exitNodeName = config.getRawConfig().gerbil.exit_node_name || @@ -30,6 +31,7 @@ export async function createExitNode( address, online: true, listenPort, + relayPort, reachableAt, name: exitNodeName }) diff --git a/server/routers/gerbil/getConfig.ts b/server/routers/gerbil/getConfig.ts index bd57eae39..70e50e93f 100644 --- a/server/routers/gerbil/getConfig.ts +++ b/server/routers/gerbil/getConfig.ts @@ -143,10 +143,8 @@ export async function generateGerbilConfig(exitNode: ExitNode) { peers = [...sitePeers, ...clientPeers]; const configResponse: GetConfigResponse = { - listenPort: - exitNode.listenPort || - config.getRawConfig().gerbil.start_port, - relayPort: config.getRawConfig().gerbil.clients_start_port, + listenPort: exitNode.listenPort || 51820, + relayPort: exitNode.relayPort || 21820, ipAddress: exitNode.address, peers }; From f15f4aee1740f479a298e502481b1558437cd7b2 Mon Sep 17 00:00:00 2001 From: TiltedTeapot Date: Thu, 17 Sep 2026 08:54:13 -0600 Subject: [PATCH 3/6] added to db again --- server/db/pg/schema/schema.ts | 1 + server/db/sqlite/schema/schema.ts | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/server/db/pg/schema/schema.ts b/server/db/pg/schema/schema.ts index a4210ab8e..47457680f 100644 --- a/server/db/pg/schema/schema.ts +++ b/server/db/pg/schema/schema.ts @@ -460,6 +460,7 @@ export const exitNodes = pgTable("exitNodes", { endpoint: varchar("endpoint").notNull(), publicKey: varchar("publicKey").notNull(), listenPort: integer("listenPort").notNull(), + relayPort: integer("relayPort").notNull(), reachableAt: varchar("reachableAt"), maxConnections: integer("maxConnections"), online: boolean("online").notNull().default(false), diff --git a/server/db/sqlite/schema/schema.ts b/server/db/sqlite/schema/schema.ts index d3c160df9..4bee2a40e 100644 --- a/server/db/sqlite/schema/schema.ts +++ b/server/db/sqlite/schema/schema.ts @@ -481,7 +481,7 @@ export const exitNodes = sqliteTable("exitNodes", { endpoint: text("endpoint").notNull(), // this is how to reach gerbil externally - gets put into the wireguard config publicKey: text("publicKey").notNull(), listenPort: integer("listenPort").notNull(), - relayPort: integer("listenPort").notNull(), + relayPort: integer("relayPort").notNull(), reachableAt: text("reachableAt"), // this is the internal address of the gerbil http server for command control maxConnections: integer("maxConnections"), online: integer("online", { mode: "boolean" }).notNull().default(false), From 29fc221f596c0f3d17aa22c93c4d1662c32c85b5 Mon Sep 17 00:00:00 2001 From: TiltedTeapot Date: Thu, 17 Sep 2026 08:56:08 -0600 Subject: [PATCH 4/6] remove TODO comment for fix made in 98a261e --- server/db/sqlite/schema/schema.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/db/sqlite/schema/schema.ts b/server/db/sqlite/schema/schema.ts index 4bee2a40e..c2d23e93b 100644 --- a/server/db/sqlite/schema/schema.ts +++ b/server/db/sqlite/schema/schema.ts @@ -130,7 +130,7 @@ export const sites = sqliteTable( address: text("address"), // this is the address of the wireguard interface in newt endpoint: text("endpoint"), // this is how to reach gerbil externally - gets put into the wireguard config localEndpoints: text("localEndpoints"), // JSON encoded list of string ips on the local machine to try to connect to - publicKey: text("publicKey"), // TODO: Fix typo in publicKey + publicKey: text("publicKey"), lastHolePunch: integer("lastHolePunch"), listenPort: integer("listenPort"), dockerSocketEnabled: integer("dockerSocketEnabled", { mode: "boolean" }) From 371292104831b2a9eda802fc3aff51fc7f0cf3fe Mon Sep 17 00:00:00 2001 From: TiltedTeapot Date: Tue, 6 Oct 2026 18:07:27 -0600 Subject: [PATCH 5/6] Propogated Changes. listen port is now accessed from db instead of config --- server/lib/exitNodes/exitNodes.ts | 1 + server/lib/rebuildClientAssociations.ts | 9 +++++---- server/private/routers/gerbil/createExitNode.ts | 2 ++ .../remoteExitNode/createRemoteExitNode.ts | 6 ++---- server/routers/newt/buildConfiguration.ts | 6 +++++- server/routers/olm/buildConfiguration.ts | 4 +--- server/routers/olm/getOlmToken.ts | 5 ++--- server/routers/olm/handleOlmRelayMessage.ts | 15 ++++++++------- .../olm/handleOlmServerInitAddPeerHandshake.ts | 1 + server/routers/olm/peers.ts | 8 ++++---- server/routers/olm/sync.ts | 3 +-- server/setup/copyInConfig.ts | 7 ++++++- 12 files changed, 38 insertions(+), 29 deletions(-) diff --git a/server/lib/exitNodes/exitNodes.ts b/server/lib/exitNodes/exitNodes.ts index 12947c1d5..cd0afbf7a 100644 --- a/server/lib/exitNodes/exitNodes.ts +++ b/server/lib/exitNodes/exitNodes.ts @@ -36,6 +36,7 @@ export async function listExitNodes( endpoint: exitNodes.endpoint, publicKey: exitNodes.publicKey, listenPort: exitNodes.listenPort, + relayPort: exitNodes.relayPort, reachableAt: exitNodes.reachableAt, maxConnections: exitNodes.maxConnections, online: exitNodes.online, diff --git a/server/lib/rebuildClientAssociations.ts b/server/lib/rebuildClientAssociations.ts index 02b84c993..b5a164c51 100644 --- a/server/lib/rebuildClientAssociations.ts +++ b/server/lib/rebuildClientAssociations.ts @@ -34,7 +34,6 @@ import { import { sendToExitNode } from "#dynamic/lib/exitNodes"; import { sendToClientsBatch } from "#dynamic/routers/ws"; import { canCompress } from "@server/lib/clientVersionChecks"; -import config from "@server/lib/config"; import logger from "@server/logger"; import { generateAliasConfig, @@ -816,6 +815,7 @@ async function handleMessagesForSiteClients( siteId: number; exitNode: { publicKey: string; + relayPort: number; endpoint: string; }; }; @@ -961,6 +961,7 @@ async function handleMessagesForSiteClients( siteId, exitNode: { publicKey: exitNode.publicKey, + relayPort: exitNode.relayPort, endpoint: exitNode.endpoint } }, @@ -1238,8 +1239,6 @@ async function syncClientExitNodeConnections( .map((r) => [r.clientId as number, r]) ); - const relayPort = config.getRawConfig().gerbil.clients_start_port; - const connectPayloads: { clientId: string; message: { type: string; data: any }; @@ -1278,7 +1277,7 @@ async function syncClientExitNodeConnections( data: { connect: true, endpoint: `${exitNode.endpoint}:${exitNode.listenPort}`, - relayPort, + relayPort: exitNode.relayPort, publicKey: exitNode.publicKey, serverIP: exitNode.address.split("/")[0], tunnelIP: client.exitNodeSubnet.split("/")[0], @@ -2451,6 +2450,7 @@ async function handleMessagesForClientSites( siteId: number; exitNode: { publicKey: string; + relayPort: number; endpoint: string; }; }; @@ -2550,6 +2550,7 @@ async function handleMessagesForClientSites( siteId: site.siteId, exitNode: { publicKey: exitNode.publicKey, + relayPort: exitNode.relayPort, endpoint: exitNode.endpoint } }, diff --git a/server/private/routers/gerbil/createExitNode.ts b/server/private/routers/gerbil/createExitNode.ts index c2ad1d517..f0cdb54d4 100644 --- a/server/private/routers/gerbil/createExitNode.ts +++ b/server/private/routers/gerbil/createExitNode.ts @@ -34,6 +34,7 @@ export async function createExitNode( // TODO: eventually we will want to get the next available port so that we can multiple exit nodes // const listenPort = await getNextAvailablePort(); const listenPort = config.getRawConfig().gerbil.start_port; + const relayPort = config.getRawConfig().gerbil.clients_start_port; const exitNodeName = config.getRawConfig().gerbil.exit_node_name || @@ -49,6 +50,7 @@ export async function createExitNode( privateConfig.getRawPrivateConfig().app.region || null, address, listenPort, + relayPort, online: true, reachableAt, name: exitNodeName diff --git a/server/private/routers/remoteExitNode/createRemoteExitNode.ts b/server/private/routers/remoteExitNode/createRemoteExitNode.ts index 3462e13ff..96d8262e6 100644 --- a/server/private/routers/remoteExitNode/createRemoteExitNode.ts +++ b/server/private/routers/remoteExitNode/createRemoteExitNode.ts @@ -201,10 +201,7 @@ export async function createRemoteExitNode( let releaseSubnetLock: (() => Promise) | null = null; let newExitNodeAddress: string | null = null; if (!existingExitNode) { - const { value, release } = await getNextAvailableSubnet( - db, - orgId - ); + const { value, release } = await getNextAvailableSubnet(db, orgId); newExitNodeAddress = value; releaseSubnetLock = release; } @@ -220,6 +217,7 @@ export async function createRemoteExitNode( endpoint: "", publicKey: "", listenPort: 0, + relayPort: 0, online: false, type: "remoteExitNode" }) diff --git a/server/routers/newt/buildConfiguration.ts b/server/routers/newt/buildConfiguration.ts index 6dece5dfa..7c3b13207 100644 --- a/server/routers/newt/buildConfiguration.ts +++ b/server/routers/newt/buildConfiguration.ts @@ -96,7 +96,10 @@ export async function buildClientConfigurationForNewtClient( await updatePeer(client.clients.clientId, { siteId: site.siteId, endpoint: site.endpoint!, - relayEndpoint: formatEndpoint(exitNode.endpoint, config.getRawConfig().gerbil.clients_start_port), + relayEndpoint: formatEndpoint( + exitNode.endpoint, + exitNode.relayPort + ), publicKey: site.publicKey!, serverIP: site.address, serverPort: site.listenPort @@ -121,6 +124,7 @@ export async function buildClientConfigurationForNewtClient( siteId, exitNode: { publicKey: exitNode.publicKey, + relayPort: exitNode.relayPort, endpoint: exitNode.endpoint } } diff --git a/server/routers/olm/buildConfiguration.ts b/server/routers/olm/buildConfiguration.ts index bd82e43ad..79f2fc248 100644 --- a/server/routers/olm/buildConfiguration.ts +++ b/server/routers/olm/buildConfiguration.ts @@ -18,7 +18,6 @@ import { import logger from "@server/logger"; import { and, eq, inArray } from "drizzle-orm"; import { addPeer, deletePeer } from "../newt/peers"; -import config from "@server/lib/config"; import { SiR } from "react-icons/si"; export async function buildSiteConfigurationForOlmClient( @@ -129,7 +128,6 @@ export async function buildSiteConfigurationForOlmClient( } } - const clientsStartPort = config.getRawConfig().gerbil.clients_start_port; const peerOps: Promise[] = []; // Process each site @@ -216,7 +214,7 @@ export async function buildSiteConfigurationForOlmClient( logger.warn(`Exit node not found for site ${site.siteId}`); continue; } - relayEndpoint = `${exitNode.endpoint}:${clientsStartPort}`; + relayEndpoint = `${exitNode.endpoint}:${exitNode.relayPort}`; } // Add site configuration to the array diff --git a/server/routers/olm/getOlmToken.ts b/server/routers/olm/getOlmToken.ts index 7808b558b..4cfdb1b56 100644 --- a/server/routers/olm/getOlmToken.ts +++ b/server/routers/olm/getOlmToken.ts @@ -289,7 +289,7 @@ export async function getOlmToken( let exitNodesHpData = allExitNodes.map((exitNode: ExitNode) => { return { publicKey: exitNode.publicKey, - relayPort: config.getRawConfig().gerbil.clients_start_port, + relayPort: exitNode.relayPort, endpoint: exitNode.endpoint, siteIds: exitNodeIdToSiteIds[exitNode.exitNodeId] ?? [] }; @@ -347,8 +347,7 @@ export async function getOlmToken( exitNodesHpData = [ { publicKey: best.publicKey, - relayPort: - config.getRawConfig().gerbil.clients_start_port, + relayPort: best.relayPort, endpoint: best.endpoint, siteIds: [] // it should still HP without the site ids but it will get stuck in the client diff --git a/server/routers/olm/handleOlmRelayMessage.ts b/server/routers/olm/handleOlmRelayMessage.ts index 1cd27912b..ce71ac2fd 100644 --- a/server/routers/olm/handleOlmRelayMessage.ts +++ b/server/routers/olm/handleOlmRelayMessage.ts @@ -4,7 +4,6 @@ import { clients, clientSitesAssociationsCache, Olm } from "@server/db"; import { and, eq, inArray } from "drizzle-orm"; import { updatePeersBatch } from "../newt/peers"; import logger from "@server/logger"; -import config from "@server/lib/config"; import { parseSiteChainBatch, resolveNewtIdsBySite } from "./batchUtils"; export const handleOlmRelayMessage: MessageHandler = async (context) => { @@ -77,6 +76,7 @@ export const handleOlmRelayMessage: MessageHandler = async (context) => { siteId: number; chainId?: string; relayEndpoint: string; + relayPort: number; }[] = []; for (let i = 0; i < siteIds.length; i++) { @@ -97,7 +97,8 @@ export const handleOlmRelayMessage: MessageHandler = async (context) => { valid.push({ siteId, chainId: chainIds[i], - relayEndpoint: exitNode.endpoint + relayEndpoint: exitNode.endpoint, + relayPort: exitNode.relayPort }); } @@ -121,7 +122,9 @@ export const handleOlmRelayMessage: MessageHandler = async (context) => { ); // Only ack sites we can actually tell their newt to relay for - const newtIdBySiteId = await resolveNewtIdsBySite(valid.map((v) => v.siteId)); + const newtIdBySiteId = await resolveNewtIdsBySite( + valid.map((v) => v.siteId) + ); const pushable = valid.filter((v) => { if (!newtIdBySiteId.has(v.siteId)) { logger.warn(`Newt not found for site ${v.siteId}`); @@ -144,8 +147,6 @@ export const handleOlmRelayMessage: MessageHandler = async (context) => { })) ); - const relayPort = config.getRawConfig().gerbil.clients_start_port; - if (isBatch) { return { message: { @@ -153,7 +154,7 @@ export const handleOlmRelayMessage: MessageHandler = async (context) => { data: { siteIds: pushable.map((v) => v.siteId), relayEndpoints: pushable.map((v) => v.relayEndpoint), - relayPort, + relayPort: pushable.map((v) => v.relayPort), chainIds: pushable.map((v) => v.chainId) } }, @@ -169,7 +170,7 @@ export const handleOlmRelayMessage: MessageHandler = async (context) => { data: { siteId: single.siteId, relayEndpoint: single.relayEndpoint, - relayPort, + relayPort: single.relayPort, chainId: single.chainId } }, diff --git a/server/routers/olm/handleOlmServerInitAddPeerHandshake.ts b/server/routers/olm/handleOlmServerInitAddPeerHandshake.ts index 6bad5b89b..2ede875b2 100644 --- a/server/routers/olm/handleOlmServerInitAddPeerHandshake.ts +++ b/server/routers/olm/handleOlmServerInitAddPeerHandshake.ts @@ -216,6 +216,7 @@ export const handleOlmServerInitAddPeerHandshake: MessageHandler = async ( siteId: site.siteId, exitNode: { publicKey: exitNode.publicKey, + relayPort: exitNode.relayPort, endpoint: exitNode.endpoint } }, diff --git a/server/routers/olm/peers.ts b/server/routers/olm/peers.ts index 960c6ad23..2a8e7b12a 100644 --- a/server/routers/olm/peers.ts +++ b/server/routers/olm/peers.ts @@ -1,7 +1,6 @@ import { sendToClient, sendToClientsBatch } from "#dynamic/routers/ws"; import { clientSitesAssociationsCache, db, olms } from "@server/db"; import { canCompress } from "@server/lib/clientVersionChecks"; -import config from "@server/lib/config"; import logger from "@server/logger"; import { and, eq, inArray } from "drizzle-orm"; import { Alias } from "yaml"; @@ -155,6 +154,7 @@ export async function initPeerAddHandshake( siteId: number; exitNode: { publicKey: string; + relayPort: number; endpoint: string; }; }, @@ -181,7 +181,7 @@ export async function initPeerAddHandshake( siteId: peer.siteId, exitNode: { publicKey: peer.exitNode.publicKey, - relayPort: config.getRawConfig().gerbil.clients_start_port, + relayPort: peer.exitNode.relayPort, endpoint: peer.exitNode.endpoint }, chainId @@ -297,6 +297,7 @@ export async function initPeerAddHandshakeBatch( siteId: number; exitNode: { publicKey: string; + relayPort: number; endpoint: string; }; }; @@ -317,8 +318,7 @@ export async function initPeerAddHandshakeBatch( siteId: item.peer.siteId, exitNode: { publicKey: item.peer.exitNode.publicKey, - relayPort: - config.getRawConfig().gerbil.clients_start_port, + relayPort: item.peer.exitNode.relayPort, endpoint: item.peer.exitNode.endpoint }, chainId: item.chainId diff --git a/server/routers/olm/sync.ts b/server/routers/olm/sync.ts index 5a681fef7..1d060b02b 100644 --- a/server/routers/olm/sync.ts +++ b/server/routers/olm/sync.ts @@ -12,7 +12,6 @@ import { buildSiteConfigurationForOlmClient } from "./buildConfiguration"; import { sendToClient } from "#dynamic/routers/ws"; import logger from "@server/logger"; import { count, eq, inArray } from "drizzle-orm"; -import config from "@server/lib/config"; import { canCompress } from "@server/lib/clientVersionChecks"; import { build } from "@server/build"; @@ -125,7 +124,7 @@ export async function sendOlmSyncMessage(olm: Olm, client: Client) { exitNodesData = allExitNodes.map((exitNode) => { return { publicKey: exitNode.publicKey, - relayPort: config.getRawConfig().gerbil.clients_start_port, + relayPort: exitNode.relayPort, endpoint: exitNode.endpoint, siteIds: exitNodeIdToSiteIds[exitNode.exitNodeId] ?? [] }; diff --git a/server/setup/copyInConfig.ts b/server/setup/copyInConfig.ts index be3768179..fb75417de 100644 --- a/server/setup/copyInConfig.ts +++ b/server/setup/copyInConfig.ts @@ -11,6 +11,7 @@ export async function copyInConfig() { const endpoint = config.getRawConfig().gerbil.base_endpoint; const listenPort = config.getRawConfig().gerbil.start_port; + const relayPort = config.getRawConfig().gerbil.clients_start_port; if ( !config.getRawConfig().flags?.disable_config_managed_domains && @@ -23,7 +24,7 @@ export async function copyInConfig() { if (exitNodeName) { await db .update(exitNodes) - .set({ endpoint, listenPort }) + .set({ endpoint, listenPort, relayPort }) .where(eq(exitNodes.name, exitNodeName)); } else { await db @@ -34,6 +35,10 @@ export async function copyInConfig() { .update(exitNodes) .set({ listenPort }) .where(ne(exitNodes.listenPort, listenPort)); + await db + .update(exitNodes) + .set({ relayPort }) + .where(ne(exitNodes.relayPort, relayPort)); } } From 91aefa67dcf7251d4367589672b41c8522371477 Mon Sep 17 00:00:00 2001 From: TiltedTeapot Date: Tue, 6 Oct 2026 18:08:22 -0600 Subject: [PATCH 6/6] removed literal listenport error references --- server/routers/newt/handleNewtGetConfigMessage.ts | 3 +-- server/routers/olm/error.ts | 5 +---- server/routers/olm/handleOlmRegisterMessage.ts | 3 +-- 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/server/routers/newt/handleNewtGetConfigMessage.ts b/server/routers/newt/handleNewtGetConfigMessage.ts index 169c8a0f0..dabea0353 100644 --- a/server/routers/newt/handleNewtGetConfigMessage.ts +++ b/server/routers/newt/handleNewtGetConfigMessage.ts @@ -12,7 +12,6 @@ import { supportsCertReferences } from "@server/lib/clientVersionChecks"; import { dedupeCertsForTargets } from "@server/lib/ip"; -import config from "@server/lib/config"; import { waitForSiteRebuildIdle } from "@server/lib/rebuildClientAssociations"; export const handleNewtGetConfigMessage: MessageHandler = async (context) => { @@ -61,7 +60,7 @@ export const handleNewtGetConfigMessage: MessageHandler = async (context) => { if (existingSite.lastHolePunch && now - existingSite.lastHolePunch > 12) { logger.warn( - `Site last hole punch is too old; skipping this register. The site is failing to hole punch and identify its network address with the server. Can the site reach the server on UDP port ${config.getRawConfig().gerbil.clients_start_port}?` + `Site last hole punch is too old; skipping this register. The site is failing to hole punch and identify its network address with the server. Can the site reach the server on its Relay UDP port?` ); return; } diff --git a/server/routers/olm/error.ts b/server/routers/olm/error.ts index b0fd90993..586aa4301 100644 --- a/server/routers/olm/error.ts +++ b/server/routers/olm/error.ts @@ -1,7 +1,4 @@ import { sendToClient } from "#dynamic/routers/ws"; -import config from "@server/lib/config"; - -const udpPort = config.getRawConfig().gerbil.clients_start_port; // Error codes for registration failures export const OlmErrorCodes = { @@ -93,7 +90,7 @@ export const OlmErrorCodes = { }, HOLEPUNCH_MISSING: { code: "HOLEPUNCH_MISSING", - message: `Unable to coordinate client P2P connection. Please ensure your client can reach the server on UDP port ${udpPort} and try registering again.` + message: `Unable to coordinate client P2P connection. Please ensure your client can reach the server on its relay UDP port and try registering again.` }, NO_AVAILABLE_SUBNET: { code: "NO_AVAILABLE_SUBNET", diff --git a/server/routers/olm/handleOlmRegisterMessage.ts b/server/routers/olm/handleOlmRegisterMessage.ts index f583729ef..c74b82c6b 100644 --- a/server/routers/olm/handleOlmRegisterMessage.ts +++ b/server/routers/olm/handleOlmRegisterMessage.ts @@ -20,7 +20,6 @@ import { OlmErrorCodes, sendOlmError } from "./error"; import { handleFingerprintInsertion } from "./fingerprintingUtils"; import { build } from "@server/build"; import { canCompress } from "@server/lib/clientVersionChecks"; -import config from "@server/lib/config"; import cache from "#dynamic/lib/cache"; // not using regional here because we need this in the register message handler before we know where the client is import { waitForClientRebuildIdle } from "@server/lib/rebuildClientAssociations"; import { @@ -438,7 +437,7 @@ export const handleOlmRegisterMessage: MessageHandler = async (context) => { // TODO: I still think there is a better way to do this rather than locking it out here but ??? if (now - (client.lastHolePunch || 0) > 12 && sitesCount > 0) { logger.warn( - `[handleOlmRegisterMessage] Client last hole punch is too old and we have sites to send; skipping this register. The client is failing to hole punch and identify its network address with the server. Can the client reach the server on UDP port ${config.getRawConfig().gerbil.clients_start_port}?`, + `[handleOlmRegisterMessage] Client last hole punch is too old and we have sites to send; skipping this register. The client is failing to hole punch and identify its network address with the server. Can the client reach the server on its relay UDP port?`, { orgId: client.orgId, clientId: client.clientId } );