network: set timeout on write

Fix a bug occuring under high load when node
hangs during this write.
This commit is contained in:
Evgenii Stratonikov 2020-12-24 14:38:58 +03:00
parent 5bd6c1e5cc
commit 84a3474fc5

View file

@ -195,6 +195,7 @@ func (p *TCPPeer) handleQueues() {
var p2pSkipCounter uint32 var p2pSkipCounter uint32
const p2pSkipDivisor = 4 const p2pSkipDivisor = 4
var writeTimeout = time.Duration(p.server.chain.GetConfig().SecondsPerBlock) * time.Second
for { for {
var msg []byte var msg []byte
@ -228,6 +229,10 @@ func (p *TCPPeer) handleQueues() {
case msg = <-p.sendQ: case msg = <-p.sendQ:
} }
} }
err = p.conn.SetWriteDeadline(time.Now().Add(writeTimeout))
if err != nil {
break
}
_, err = p.conn.Write(msg) _, err = p.conn.Write(msg)
if err != nil { if err != nil {
break break