X-Git-Url: http://www.git.cypherpunks.ru/?p=govpn.git;a=blobdiff_plain;f=src%2Fcypherpunks.ru%2Fgovpn%2Fcmd%2Fgovpn-server%2Ftcp.go;h=61eb1e07395fcc8b10ddf690d43b706b0f28300b;hp=c36da3fed3ca02f8610a7ff9040b679f3e4b3981;hb=8cdc4548bc7b6c8b774c2be3b7cd350756df25b6;hpb=f926c8f7ea311927ecc7c86ac7fa3b804279e8a9 diff --git a/src/cypherpunks.ru/govpn/cmd/govpn-server/tcp.go b/src/cypherpunks.ru/govpn/cmd/govpn-server/tcp.go index c36da3f..61eb1e0 100644 --- a/src/cypherpunks.ru/govpn/cmd/govpn-server/tcp.go +++ b/src/cypherpunks.ru/govpn/cmd/govpn-server/tcp.go @@ -99,10 +99,18 @@ func handleTCP(conn net.Conn) { peersByIDLock.RLock() addrPrev, exists := peersByID[*peer.ID] peersByIDLock.RUnlock() + var peerPrev *PeerState if exists { peersLock.Lock() - peers[addrPrev].terminator <- struct{}{} - tap = peers[addrPrev].tap + peerPrev = peers[addrPrev] + if peerPrev == nil { + exists = false + peersLock.Unlock() + } + } + if exists { + peerPrev.terminator <- struct{}{} + tap = peerPrev.tap ps = &PeerState{ peer: peer, tap: tap,