mirror of
https://github.com/fosrl/pangolin.git
synced 2026-03-03 09:16:40 +00:00
Handle hp oddities
This commit is contained in:
@@ -230,7 +230,9 @@ export async function updateAndGenerateEndpointDestinations(
|
|||||||
.returning();
|
.returning();
|
||||||
|
|
||||||
if (
|
if (
|
||||||
updatedClientSitesAssociationsCache.endpoint !== site.endpoint // this is the endpoint from the join table not the site
|
updatedClientSitesAssociationsCache.endpoint !==
|
||||||
|
site.endpoint && // this is the endpoint from the join table not the site
|
||||||
|
updatedClient.pubKey === publicKey // only trigger if the client's public key matches the current public key which means it has registered so we dont prematurely send the update
|
||||||
) {
|
) {
|
||||||
logger.info(
|
logger.info(
|
||||||
`ClientSitesAssociationsCache for client ${olm.clientId} and site ${site.siteId} endpoint changed from ${site.endpoint} to ${updatedClientSitesAssociationsCache.endpoint}`
|
`ClientSitesAssociationsCache for client ${olm.clientId} and site ${site.siteId} endpoint changed from ${site.endpoint} to ${updatedClientSitesAssociationsCache.endpoint}`
|
||||||
@@ -318,7 +320,11 @@ export async function updateAndGenerateEndpointDestinations(
|
|||||||
.where(eq(sites.siteId, newt.siteId))
|
.where(eq(sites.siteId, newt.siteId))
|
||||||
.returning();
|
.returning();
|
||||||
|
|
||||||
if (updatedSite.endpoint != site.endpoint) {
|
if (
|
||||||
|
updatedSite.endpoint != site.endpoint &&
|
||||||
|
updatedSite.publicKey == publicKey
|
||||||
|
) {
|
||||||
|
// only trigger if the site's public key matches the current public key which means it has registered so we dont prematurely send the update
|
||||||
logger.info(
|
logger.info(
|
||||||
`Site ${newt.siteId} endpoint changed from ${site.endpoint} to ${updatedSite.endpoint}`
|
`Site ${newt.siteId} endpoint changed from ${site.endpoint} to ${updatedSite.endpoint}`
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -126,15 +126,6 @@ export const handleOlmRegisterMessage: MessageHandler = async (context) => {
|
|||||||
.where(eq(olms.olmId, olm.olmId));
|
.where(eq(olms.olmId, olm.olmId));
|
||||||
}
|
}
|
||||||
|
|
||||||
// this prevents us from accepting a register from an olm that has not hole punched yet.
|
|
||||||
// the olm will pump the register so we can keep checking
|
|
||||||
if (now - (client.lastHolePunch || 0) > 5) {
|
|
||||||
logger.warn(
|
|
||||||
"Client last hole punch is too old; skipping this register"
|
|
||||||
);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (client.pubKey !== publicKey) {
|
if (client.pubKey !== publicKey) {
|
||||||
logger.info(
|
logger.info(
|
||||||
"Public key mismatch. Updating public key and clearing session info..."
|
"Public key mismatch. Updating public key and clearing session info..."
|
||||||
@@ -172,8 +163,18 @@ export const handleOlmRegisterMessage: MessageHandler = async (context) => {
|
|||||||
`Found ${sitesData.length} sites for client ${client.clientId}`
|
`Found ${sitesData.length} sites for client ${client.clientId}`
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// this prevents us from accepting a register from an olm that has not hole punched yet.
|
||||||
|
// the olm will pump the register so we can keep checking
|
||||||
|
// TODO: I still think there is a better way to do this rather than locking it out here but ???
|
||||||
|
if (now - (client.lastHolePunch || 0) > 5 && sitesData.length > 0) {
|
||||||
|
logger.warn(
|
||||||
|
"Client last hole punch is too old and we have sites to send; skipping this register"
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Process each site
|
// Process each site
|
||||||
for (const { sites: site } of sitesData) {
|
for (const { sites: site, clientSitesAssociationsCache: association } of sitesData) {
|
||||||
if (!site.exitNodeId) {
|
if (!site.exitNodeId) {
|
||||||
logger.warn(
|
logger.warn(
|
||||||
`Site ${site.siteId} does not have exit node, skipping`
|
`Site ${site.siteId} does not have exit node, skipping`
|
||||||
|
|||||||
Reference in New Issue
Block a user