X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=peer-conn-msg-writer.go;h=1bacc59d188c59ceb726abf4911939092ac9f574;hb=HEAD;hp=b30d34e07eac3f6501a0bd1126108c99c5c95d57;hpb=12279621e4e2bf5c6f230c9e8668206519e79c9e;p=btrtrc.git diff --git a/peer-conn-msg-writer.go b/peer-conn-msg-writer.go index b30d34e0..1bacc59d 100644 --- a/peer-conn-msg-writer.go +++ b/peer-conn-msg-writer.go @@ -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)