2
0
Эх сурвалжийг харах

fix fast handshake trigger for static hosts (#265)

We are currently triggering a fast handshake for static hosts right
inside HandshakeManager.AddVpnIP, but this can actually trigger before
we have generated the handshake packet to use. Instead, we should be
triggering right after we call ixHandshakeStage0 in getOrHandshake
(which generates the handshake packet)
Wade Simmons 5 жил өмнө
parent
commit
a54f3fc681
2 өөрчлөгдсөн 9 нэмэгдсэн , 8 устгасан
  1. 0 8
      handshake_manager.go
  2. 9 0
      inside.go

+ 0 - 8
handshake_manager.go

@@ -201,14 +201,6 @@ func (c *HandshakeManager) AddVpnIP(vpnIP uint32) *HostInfo {
 	// main receive thread for very long by waiting to add items to the pending map
 	c.OutboundHandshakeTimer.Add(vpnIP, c.config.tryInterval)
 
-	// If this is a static host, we don't need to wait for the HostQueryReply
-	// We can trigger the handshake right now
-	if _, ok := c.lightHouse.staticList[vpnIP]; ok {
-		select {
-		case c.trigger <- vpnIP:
-		default:
-		}
-	}
 	return hostinfo
 }
 

+ 9 - 0
inside.go

@@ -94,6 +94,15 @@ func (f *Interface) getOrHandshake(vpnIp uint32) *HostInfo {
 		ixHandshakeStage0(f, vpnIp, hostinfo)
 		// FIXME: Maybe make XX selectable, but probably not since psk makes it nearly pointless for us.
 		//xx_handshakeStage0(f, ip, hostinfo)
+
+		// If this is a static host, we don't need to wait for the HostQueryReply
+		// We can trigger the handshake right now
+		if _, ok := f.lightHouse.staticList[vpnIp]; ok {
+			select {
+			case f.handshakeManager.trigger <- vpnIp:
+			default:
+			}
+		}
 	}
 
 	return hostinfo