]> Cypherpunks.ru repositories - govpn.git/commitdiff
defer unlock
authorBruno Clermont <bruno@robotinfra.com>
Wed, 8 Feb 2017 11:21:52 +0000 (19:21 +0800)
committerSergey Matveev <stargrave@stargrave.org>
Fri, 3 Mar 2017 21:09:55 +0000 (00:09 +0300)
src/cypherpunks.ru/govpn/peer.go

index e914cd69f5216903a718a5aaa2ea92bcab1dcd5e..989fd31ef1720deedd0ccd88c90de7fed81c336d 100644 (file)
@@ -379,7 +379,8 @@ func (p *Peer) PktProcess(data []byte, tap io.Writer, reorderable bool) bool {
                return false
        }
        var out []byte
-       p.BusyR.Lock() // TODO use defer to unlock?
+       p.BusyR.Lock()
+       defer p.BusyR.Unlock()
        copy(p.nonceR[8:], data[len(data)-NonceSize:])
        if p.Encless {
                var err error
@@ -389,7 +390,6 @@ func (p *Peer) PktProcess(data []byte, tap io.Writer, reorderable bool) bool {
                                p.LogFields(),
                        ).WithError(err).Debug("Failed to decode encless")
                        p.FramesUnauth++
-                       p.BusyR.Unlock()
                        return false
                }
        } else {
@@ -407,7 +407,6 @@ func (p *Peer) PktProcess(data []byte, tap io.Writer, reorderable bool) bool {
                copy(p.tagR[:], data[:tagSize])
                if !poly1305.Verify(p.tagR, data[tagSize:], p.keyAuthR) {
                        p.FramesUnauth++
-                       p.BusyR.Unlock()
                        return false
                }
                out = p.bufR[CC20IBS : CC20IBS+len(data)-tagSize-NonceSize]
@@ -422,7 +421,6 @@ func (p *Peer) PktProcess(data []byte, tap io.Writer, reorderable bool) bool {
                // or too new (many packets were lost)
                if !(foundL || foundM || foundH) {
                        p.FramesDup++
-                       p.BusyR.Unlock()
                        return false
                }
                // Delete seen nonce
@@ -448,7 +446,6 @@ func (p *Peer) PktProcess(data []byte, tap io.Writer, reorderable bool) bool {
        } else {
                if subtle.ConstantTimeCompare(data[len(data)-NonceSize:], p.NonceExpect) != 1 {
                        p.FramesDup++
-                       p.BusyR.Unlock()
                        return false
                }
                copy(p.NonceExpect, (<-p.noncesExpect)[:])
@@ -459,25 +456,21 @@ func (p *Peer) PktProcess(data []byte, tap io.Writer, reorderable bool) bool {
        p.LastPing = time.Now()
        p.pktSizeR = bytes.LastIndexByte(out, padByte)
        if p.pktSizeR == -1 {
-               p.BusyR.Unlock()
                return false
        }
        // Validate the pad
        for i := p.pktSizeR + 1; i < len(out); i++ {
                if out[i] != 0 {
-                       p.BusyR.Unlock()
                        return false
                }
        }
 
        if p.pktSizeR == 0 {
                p.HeartbeatRecv++
-               p.BusyR.Unlock()
                return true
        }
        p.BytesPayloadIn += uint64(p.pktSizeR)
        tap.Write(out[:p.pktSizeR])
-       p.BusyR.Unlock()
        return true
 }