Co-authored-by: jdl <jdl@desktop> Co-authored-by: jdl <jdl@crumpington.com> Reviewed-on: #3
51 lines
1.0 KiB
Go
51 lines
1.0 KiB
Go
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
|
|
}
|
|
}
|