package peer import "net/netip" type stateDisconnected struct { *peerData } func enterStateDisconnected(data *peerData) peerState { data.staged.Up = false data.staged.Relay = false data.staged.Direct = false data.staged.DirectAddr = netip.AddrPort{} data.staged.PubSignKey = nil data.staged.ControlCipher = nil data.staged.DataCipher = nil data.publish(data.staged) data.pingTimer.Stop() return &stateDisconnected{data} } func (s *stateDisconnected) OnMsg(raw any) peerState { switch msg := raw.(type) { case peerUpdateMsg: return initPeerState(s.peerData, msg.Peer) case controlMsg[packetInit]: s.logf("Unexpected INIT") return s case controlMsg[packetSyn]: s.logf("Unexpected SYN") return s case controlMsg[packetAck]: s.logf("Unexpected ACK") return s case controlMsg[packetProbe]: s.logf("Unexpected probe") return s case controlMsg[packetLocalDiscovery]: return s case pingTimerMsg: s.logf("Unexpected ping") return s default: s.logf("Ignoring message: %#v", raw) return s } }