]> Cypherpunks.ru repositories - govpn.git/commitdiff
Fix variable references
authorSergey Matveev <stargrave@stargrave.org>
Tue, 24 Jan 2017 06:36:43 +0000 (09:36 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Tue, 24 Jan 2017 07:56:09 +0000 (10:56 +0300)
src/cypherpunks.ru/govpn/cmd/govpn-server/udp.go

index 5cea96afc43483ac5f59fa45e16f596bd6c66179..7e3bbc7e79359f4dc8c6351660482ac98e7ef323 100644 (file)
@@ -62,7 +62,6 @@ func startUDP() {
                var addrPrev string
                var exists bool
                var peerId *govpn.PeerId
-               var peer *govpn.Peer
                var conf *govpn.PeerConf
                for {
                        buf = <-udpBufs
@@ -76,26 +75,51 @@ func startUDP() {
                        peersLock.RLock()
                        ps, exists = peers[addr]
                        peersLock.RUnlock()
-                       if !exists {
-                               goto CheckHandshake
+                       if exists {
+                               go func(peer *govpn.Peer, tap *govpn.TAP, buf []byte, n int) {
+                                       peer.PktProcess(buf[:n], tap, true)
+                                       udpBufs <- buf
+                               }(ps.peer, ps.tap, buf, n)
+                               continue
                        }
-                       go func(ps *govpn.Peer, tap *govpn.TAP, buf []byte, n int) {
-                               peer.PktProcess(buf[:n], tap, true)
-                               udpBufs <- buf
-                       }(ps.peer, ps.tap, buf, n)
-                       continue
-               CheckHandshake:
+
                        hsLock.RLock()
                        hs, exists = handshakes[addr]
                        hsLock.RUnlock()
                        if !exists {
-                               goto CheckID
+                               peerId = idsCache.Find(buf[:n])
+                               if peerId == nil {
+                                       govpn.Printf(`[identity-unknown bind="%s" addr="%s"]`, *bindAddr, addr)
+                                       udpBufs <- buf
+                                       continue
+                               }
+                               conf = confs[*peerId]
+                               if conf == nil {
+                                       govpn.Printf(
+                                               `[conf-get-failed bind="%s" peer="%s"]`,
+                                               *bindAddr, peerId.String(),
+                                       )
+                                       udpBufs <- buf
+                                       continue
+                               }
+                               hs := govpn.NewHandshake(
+                                       addr,
+                                       UDPSender{conn: conn, addr: raddr},
+                                       conf,
+                               )
+                               hs.Server(buf[:n])
+                               udpBufs <- buf
+                               hsLock.Lock()
+                               handshakes[addr] = hs
+                               hsLock.Unlock()
+                               continue
                        }
-                       peer = hs.Server(buf[:n])
+
+                       peer := hs.Server(buf[:n])
                        if peer == nil {
-                               goto Finished
+                               udpBufs <- buf
+                               continue
                        }
-
                        govpn.Printf(
                                `[handshake-completed bind="%s" addr="%s" peer="%s"]`,
                                *bindAddr, addr, peerId.String(),
@@ -115,16 +139,16 @@ func startUDP() {
                        if exists {
                                peersLock.Lock()
                                peers[addrPrev].terminator <- struct{}{}
-                               ps = &PeerState{
+                               ps := &PeerState{
                                        peer:       peer,
                                        tap:        peers[addrPrev].tap,
                                        terminator: make(chan struct{}),
                                }
-                               go func(ps PeerState) {
-                                       govpn.PeerTapProcessor(ps.peer, ps.tap, ps.terminator)
+                               go func(peer *govpn.Peer, tap *govpn.TAP, terminator chan struct{}) {
+                                       govpn.PeerTapProcessor(peer, tap, terminator)
                                        <-udpBufs
                                        <-udpBufs
-                               }(*ps)
+                               }(ps.peer, ps.tap, ps.terminator)
                                peersByIdLock.Lock()
                                kpLock.Lock()
                                delete(peers, addrPrev)
@@ -153,16 +177,16 @@ func startUDP() {
                                                )
                                                return
                                        }
-                                       ps = &PeerState{
+                                       ps := &PeerState{
                                                peer:       peer,
                                                tap:        tap,
                                                terminator: make(chan struct{}),
                                        }
-                                       go func(ps PeerState) {
-                                               govpn.PeerTapProcessor(ps.peer, ps.tap, ps.terminator)
+                                       go func(peer *govpn.Peer, tap *govpn.TAP, terminator chan struct{}) {
+                                               govpn.PeerTapProcessor(peer, tap, terminator)
                                                <-udpBufs
                                                <-udpBufs
-                                       }(*ps)
+                                       }(ps.peer, ps.tap, ps.terminator)
                                        peersLock.Lock()
                                        peersByIdLock.Lock()
                                        kpLock.Lock()
@@ -175,31 +199,6 @@ func startUDP() {
                                        govpn.Printf(`[peer-created bind="%s" peer="%s"]`, *bindAddr, peer.Id.String())
                                }(addr, peer)
                        }
-                       goto Finished
-               CheckID:
-                       peerId = idsCache.Find(buf[:n])
-                       if peerId == nil {
-                               govpn.Printf(`[identity-unknown bind="%s" addr="%s"]`, *bindAddr, addr)
-                               goto Finished
-                       }
-                       conf = confs[*peerId]
-                       if conf == nil {
-                               govpn.Printf(
-                                       `[conf-get-failed bind="%s" peer="%s"]`,
-                                       *bindAddr, peerId.String(),
-                               )
-                               goto Finished
-                       }
-                       hs = govpn.NewHandshake(
-                               addr,
-                               UDPSender{conn: conn, addr: raddr},
-                               conf,
-                       )
-                       hs.Server(buf[:n])
-                       hsLock.Lock()
-                       handshakes[addr] = hs
-                       hsLock.Unlock()
-               Finished:
                        udpBufs <- buf
                }
        }()