]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Fix race in assigning keep alive timer
authorMatt Joiner <anacrolix@gmail.com>
Wed, 18 Aug 2021 04:48:25 +0000 (14:48 +1000)
committerMatt Joiner <anacrolix@gmail.com>
Thu, 19 Aug 2021 03:37:00 +0000 (13:37 +1000)
peer-conn-msg-writer.go

index 293c838896ba08d6de01f75c45e8c6e8ecdd7a06..16892546e77618de610199d884324000a9c442e1 100644 (file)
@@ -63,6 +63,8 @@ func (cn *peerConnMsgWriter) run(keepAliveTimeout time.Duration) {
                lastWrite      time.Time = time.Now()
                keepAliveTimer *time.Timer
        )
+       cn.mu.Lock()
+       defer cn.mu.Unlock()
        keepAliveTimer = time.AfterFunc(keepAliveTimeout, func() {
                cn.mu.Lock()
                defer cn.mu.Unlock()
@@ -71,8 +73,6 @@ func (cn *peerConnMsgWriter) run(keepAliveTimeout time.Duration) {
                }
                keepAliveTimer.Reset(keepAliveTimeout)
        })
-       cn.mu.Lock()
-       defer cn.mu.Unlock()
        defer keepAliveTimer.Stop()
        frontBuf := new(bytes.Buffer)
        for {