Try rehandshaking a main hostinfo after releasing hostmap locks (#863)

This commit is contained in:
Nate Brown 2023-05-08 14:43:03 -05:00 committed by GitHub
parent 31ed9269d7
commit d1f786419c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -17,11 +17,12 @@ import (
type trafficDecision int type trafficDecision int
const ( const (
doNothing trafficDecision = 0 doNothing trafficDecision = 0
deleteTunnel trafficDecision = 1 // delete the hostinfo on our side, do not notify the remote deleteTunnel trafficDecision = 1 // delete the hostinfo on our side, do not notify the remote
closeTunnel trafficDecision = 2 // delete the hostinfo and notify the remote closeTunnel trafficDecision = 2 // delete the hostinfo and notify the remote
swapPrimary trafficDecision = 3 swapPrimary trafficDecision = 3
migrateRelays trafficDecision = 4 migrateRelays trafficDecision = 4
tryRehandshake trafficDecision = 5
) )
type connectionManager struct { type connectionManager struct {
@ -193,6 +194,9 @@ func (n *connectionManager) doTrafficCheck(localIndex uint32, p, nb, out []byte,
case migrateRelays: case migrateRelays:
n.migrateRelayUsed(hostinfo, primary) n.migrateRelayUsed(hostinfo, primary)
case tryRehandshake:
n.tryRehandshake(hostinfo)
} }
n.resetRelayTrafficCheck(hostinfo) n.resetRelayTrafficCheck(hostinfo)
@ -321,7 +325,8 @@ func (n *connectionManager) makeTrafficDecision(localIndex uint32, p, nb, out []
delete(n.pendingDeletion, hostinfo.localIndexId) delete(n.pendingDeletion, hostinfo.localIndexId)
if mainHostInfo { if mainHostInfo {
n.tryRehandshake(hostinfo) decision = tryRehandshake
} else { } else {
if n.shouldSwapPrimary(hostinfo, primary) { if n.shouldSwapPrimary(hostinfo, primary) {
decision = swapPrimary decision = swapPrimary