29 lines
558 B
Go
29 lines
558 B
Go
package peer
|
|
|
|
import (
|
|
"net/netip"
|
|
"vppn/m"
|
|
)
|
|
|
|
type peerData = pState
|
|
|
|
func initPeerState(data *peerData, peer *m.Peer) peerState {
|
|
data.peer = peer
|
|
|
|
if peer == nil {
|
|
return enterStateDisconnected2(data)
|
|
}
|
|
|
|
if _, isValid := netip.AddrFromSlice(peer.PublicIP); isValid {
|
|
if data.localAddr.IsValid() && data.localIP < data.remoteIP {
|
|
return enterStateServer2(data)
|
|
}
|
|
return enterStateClientInit2(data)
|
|
}
|
|
|
|
if data.localAddr.IsValid() || data.localIP < data.remoteIP {
|
|
return enterStateServer2(data)
|
|
}
|
|
return enterStateClientInit2(data)
|
|
}
|