mirror of
https://github.com/slackhq/nebula.git
synced 2026-11-15 15:06:52 +01:00
Take a hybrid tunnel on msg3 even over a newer one, the initiator has committed to it
This commit is contained in:
1 parent
cbf8146bda
commit
bbade4dc9a
2 files changed
+12
-2
No files matched your search
@@ -495,6 +495,13 @@ var (
|
||||
// ErrLocalIndexCollision if we already have an entry in the main or pending
|
||||
// hostmap for the hostinfo.localIndexId.
|
||||
func (hm *HandshakeManager) CheckAndComplete(hostinfo *HostInfo, handshakePacket uint8, f *Interface) (*HostInfo, error) {
|
||||
return hm.checkAndComplete(hostinfo, handshakePacket, f, false)
|
||||
}
|
||||
|
||||
// checkAndComplete is CheckAndComplete. committed means the initiator has shown it
|
||||
// uses this tunnel, as a hybrid msg3 does, so an existing tunnel is replaced even
|
||||
// when its handshake is newer.
|
||||
func (hm *HandshakeManager) checkAndComplete(hostinfo *HostInfo, handshakePacket uint8, f *Interface, committed bool) (*HostInfo, error) {
|
||||
hm.mainHostMap.Lock()
|
||||
defer hm.mainHostMap.Unlock()
|
||||
hm.Lock()
|
||||
@@ -511,7 +518,7 @@ func (hm *HandshakeManager) CheckAndComplete(hostinfo *HostInfo, handshakePacket
|
||||
}
|
||||
|
||||
// Is this a newer handshake?
|
||||
if existingHostInfo.lastHandshakeTime >= hostinfo.lastHandshakeTime && !existingHostInfo.ConnectionState.initiator {
|
||||
if !committed && existingHostInfo.lastHandshakeTime >= hostinfo.lastHandshakeTime && !existingHostInfo.ConnectionState.initiator {
|
||||
return existingHostInfo, ErrExistingHostInfo
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user