mirror of
https://github.com/fosrl/newt.git
synced 2026-03-11 21:26:39 +00:00
Fix adding new exit nodes to hp not sending interval
This commit is contained in:
@@ -236,12 +236,6 @@ func (m *Manager) StartMultipleExitNodes(exitNodes []ExitNode) error {
|
|||||||
return fmt.Errorf("hole punch already running")
|
return fmt.Errorf("hole punch already running")
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(exitNodes) == 0 {
|
|
||||||
m.mu.Unlock()
|
|
||||||
logger.Warn("No exit nodes provided for hole punching")
|
|
||||||
return fmt.Errorf("no exit nodes provided")
|
|
||||||
}
|
|
||||||
|
|
||||||
// Populate exit nodes map
|
// Populate exit nodes map
|
||||||
m.exitNodes = make(map[string]ExitNode)
|
m.exitNodes = make(map[string]ExitNode)
|
||||||
for _, node := range exitNodes {
|
for _, node := range exitNodes {
|
||||||
@@ -270,18 +264,17 @@ func (m *Manager) Start() error {
|
|||||||
return fmt.Errorf("hole punch already running")
|
return fmt.Errorf("hole punch already running")
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(m.exitNodes) == 0 {
|
|
||||||
m.mu.Unlock()
|
|
||||||
logger.Warn("No exit nodes configured for hole punching")
|
|
||||||
return fmt.Errorf("no exit nodes configured")
|
|
||||||
}
|
|
||||||
|
|
||||||
m.running = true
|
m.running = true
|
||||||
m.stopChan = make(chan struct{})
|
m.stopChan = make(chan struct{})
|
||||||
m.updateChan = make(chan struct{}, 1)
|
m.updateChan = make(chan struct{}, 1)
|
||||||
|
nodeCount := len(m.exitNodes)
|
||||||
m.mu.Unlock()
|
m.mu.Unlock()
|
||||||
|
|
||||||
logger.Info("Starting UDP hole punch with %d exit nodes", len(m.exitNodes))
|
if nodeCount == 0 {
|
||||||
|
logger.Info("Starting UDP hole punch manager (waiting for exit nodes to be added)")
|
||||||
|
} else {
|
||||||
|
logger.Info("Starting UDP hole punch with %d exit nodes", nodeCount)
|
||||||
|
}
|
||||||
|
|
||||||
go m.runMultipleExitNodes()
|
go m.runMultipleExitNodes()
|
||||||
|
|
||||||
@@ -340,16 +333,15 @@ func (m *Manager) runMultipleExitNodes() {
|
|||||||
resolvedNodes := resolveNodes()
|
resolvedNodes := resolveNodes()
|
||||||
|
|
||||||
if len(resolvedNodes) == 0 {
|
if len(resolvedNodes) == 0 {
|
||||||
logger.Error("No exit nodes could be resolved")
|
logger.Info("No exit nodes available yet, waiting for nodes to be added")
|
||||||
return
|
} else {
|
||||||
}
|
|
||||||
|
|
||||||
// Send initial hole punch to all exit nodes
|
// Send initial hole punch to all exit nodes
|
||||||
for _, node := range resolvedNodes {
|
for _, node := range resolvedNodes {
|
||||||
if err := m.sendHolePunch(node.remoteAddr, node.publicKey); err != nil {
|
if err := m.sendHolePunch(node.remoteAddr, node.publicKey); err != nil {
|
||||||
logger.Warn("Failed to send initial hole punch to %s: %v", node.endpointName, err)
|
logger.Warn("Failed to send initial hole punch to %s: %v", node.endpointName, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Start with minimum interval
|
// Start with minimum interval
|
||||||
m.mu.Lock()
|
m.mu.Lock()
|
||||||
@@ -370,6 +362,8 @@ func (m *Manager) runMultipleExitNodes() {
|
|||||||
resolvedNodes = resolveNodes()
|
resolvedNodes = resolveNodes()
|
||||||
if len(resolvedNodes) == 0 {
|
if len(resolvedNodes) == 0 {
|
||||||
logger.Warn("No exit nodes available after refresh")
|
logger.Warn("No exit nodes available after refresh")
|
||||||
|
} else {
|
||||||
|
logger.Info("Updated resolved nodes count: %d", len(resolvedNodes))
|
||||||
}
|
}
|
||||||
// Reset interval to minimum on update
|
// Reset interval to minimum on update
|
||||||
m.mu.Lock()
|
m.mu.Lock()
|
||||||
@@ -383,7 +377,8 @@ func (m *Manager) runMultipleExitNodes() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
case <-ticker.C:
|
case <-ticker.C:
|
||||||
// Send hole punch to all exit nodes
|
// Send hole punch to all exit nodes (if any are available)
|
||||||
|
if len(resolvedNodes) > 0 {
|
||||||
for _, node := range resolvedNodes {
|
for _, node := range resolvedNodes {
|
||||||
if err := m.sendHolePunch(node.remoteAddr, node.publicKey); err != nil {
|
if err := m.sendHolePunch(node.remoteAddr, node.publicKey); err != nil {
|
||||||
logger.Debug("Failed to send hole punch to %s: %v", node.endpointName, err)
|
logger.Debug("Failed to send hole punch to %s: %v", node.endpointName, err)
|
||||||
@@ -403,6 +398,7 @@ func (m *Manager) runMultipleExitNodes() {
|
|||||||
m.mu.Unlock()
|
m.mu.Unlock()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// sendHolePunch sends an encrypted hole punch packet using the shared bind
|
// sendHolePunch sends an encrypted hole punch packet using the shared bind
|
||||||
|
|||||||
Reference in New Issue
Block a user