Fix nil dereference on peerList comparison with dupe adresses

This commit is contained in:
DataHoarder 2024-02-22 17:11:44 +01:00
parent 83df7fb0ae
commit c1486efa7d
Signed by: DataHoarder
SSH key fingerprint: SHA256:OLTRf6Fl87G52SiR7sWLGNzlJt4WOX+tfI2yxo0z7xk

View file

@ -338,6 +338,7 @@ func (s *Server) UpdateClientConnections() {
deletedPeers := 0
peerList := s.PeerList()
peerList2 := slices.Clone(peerList)
for _, p := range peerList {
if slices.ContainsFunc(connectedPeers, func(addr netip.Addr) bool {
return p.AddressPort.Addr().Compare(addr) == 0
@ -345,10 +346,12 @@ func (s *Server) UpdateClientConnections() {
p.LastSeenTimestamp.Store(currentTime)
}
if (p.LastSeenTimestamp.Load() + 3600) < currentTime {
peerList = peerList.Delete(p.AddressPort.Addr())
peerList2 = peerList2.Delete(p.AddressPort.Addr())
deletedPeers++
}
}
peerList2 = peerList
if deletedPeers > 0 {
func() {
s.peerListLock.Lock()