X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=peer-conn-msg-writer.go;h=b30d34e07eac3f6501a0bd1126108c99c5c95d57;hb=12279621e4e2bf5c6f230c9e8668206519e79c9e;hp=87ed47505f952684340083b5726d577e4bfc1932;hpb=ae4eb8569b9ecaa0bb1ec766c2c7ef5bab33ec35;p=btrtrc.git diff --git a/peer-conn-msg-writer.go b/peer-conn-msg-writer.go index 87ed4750..b30d34e0 100644 --- a/peer-conn-msg-writer.go +++ b/peer-conn-msg-writer.go @@ -12,7 +12,7 @@ import ( pp "github.com/anacrolix/torrent/peer_protocol" ) -func (pc *PeerConn) startWriter() { +func (pc *PeerConn) initMessageWriter() { w := &pc.messageWriter *w = peerConnMsgWriter{ fillWriteBuffer: func() { @@ -33,12 +33,18 @@ func (pc *PeerConn) startWriter() { }, writeBuffer: new(bytes.Buffer), } - go func() { - defer pc.locker().Unlock() - defer pc.close() - defer pc.locker().Lock() - pc.messageWriter.run(pc.t.cl.config.KeepAliveTimeout) - }() +} + +func (pc *PeerConn) startMessageWriter() { + pc.initMessageWriter() + go pc.messageWriterRunner() +} + +func (pc *PeerConn) messageWriterRunner() { + defer pc.locker().Unlock() + defer pc.close() + defer pc.locker().Lock() + pc.messageWriter.run(pc.t.cl.config.KeepAliveTimeout) } type peerConnMsgWriter struct {