]> Sergey Matveev's repositories - btrtrc.git/blobdiff - peer-conn-msg-writer.go
Drop support for go 1.20
[btrtrc.git] / peer-conn-msg-writer.go
index b30d34e07eac3f6501a0bd1126108c99c5c95d57..1bacc59d188c59ceb726abf4911939092ac9f574 100644 (file)
@@ -27,8 +27,8 @@ func (pc *PeerConn) initMessageWriter() {
                logger: pc.logger,
                w:      pc.w,
                keepAlive: func() bool {
-                       pc.locker().Lock()
-                       defer pc.locker().Unlock()
+                       pc.locker().RLock()
+                       defer pc.locker().RUnlock()
                        return pc.useful()
                },
                writeBuffer: new(bytes.Buffer),
@@ -104,6 +104,9 @@ func (cn *peerConnMsgWriter) run(keepAliveTimeout time.Duration) {
                        if err == nil && n != len(next) {
                                panic("expected full write")
                        }
+                       if err != nil {
+                               break
+                       }
                }
                if err != nil {
                        cn.logger.WithDefaultLevel(log.Debug).Printf("error writing: %v", err)