X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=cmd%2Fgovpn-client%2Fmain.go;h=119a03d3ddbfe0152e8b877e5478563abd926e07;hb=6f24325487b7fec589d6f191b2081b2476b2ce5a;hp=8b621c8bdcfef50d57316dabd169202fa6e8ee57;hpb=9fa0539ac6e2f2bd8fbd6430c9034187975bbce3;p=govpn.git diff --git a/cmd/govpn-client/main.go b/cmd/govpn-client/main.go index 8b621c8..119a03d 100644 --- a/cmd/govpn-client/main.go +++ b/cmd/govpn-client/main.go @@ -52,6 +52,7 @@ func main() { govpn.Noncediff = *nonceDiff id := govpn.IDDecode(*IDRaw) + govpn.PeersInitDummy(id) key := govpn.KeyRead(*keyPath) if id == nil { panic("ID is not specified") @@ -120,13 +121,18 @@ MainCycle: } udpPktData = udpBuf[:udpPkt.Size] - if govpn.IsValidHandshakePkt(udpPktData) { + if peer == nil { if udpPkt.Addr.String() != remote.String() { udpReady <- struct{}{} log.Println("Unknown handshake message") continue } - if p := handshake.Client(conn, key, udpPktData); p != nil { + if govpn.IDsCache.Find(udpPktData) == nil { + log.Println("Invalid identity in handshake packet") + udpReady <- struct{}{} + continue + } + if p := handshake.Client(id, conn, key, udpPktData); p != nil { log.Println("Handshake completed") if firstUpCall { go govpn.ScriptCall(*upPath, *ifaceName)