Make Wi-Fi peer rebinding atomic

This commit is contained in:
jack
2026-07-12 11:15:09 -04:00
parent 338c487ef9
commit b87239cc86
4 changed files with 151 additions and 23 deletions
@@ -1291,7 +1291,13 @@ class WifiAwareMeshService(private val context: Context) : MeshService, Transpor
return
}
connectionTracker.rebindPeerId(provisionalPeerId, canonicalPeerId, link.transport)
if (!connectionTracker.rebindPeerIdIfCurrent(provisionalPeerId, canonicalPeerId, link.transport)) {
Log.w(
TAG,
"Ignoring Noise link promotion for ${canonicalPeerId.take(8)}: provisional socket changed before rebind"
)
return
}
handleToPeerId.forEach { (handle, peerId) ->
if (peerId == provisionalPeerId) handleToPeerId[handle] = canonicalPeerId
}