From 5ef13c764e885f4004c71d3f561d93c9d986f979 Mon Sep 17 00:00:00 2001 From: vyzo Date: Sat, 13 Jan 2018 20:11:32 +0200 Subject: [PATCH] don't always spawn a goroutine for sending a new message --- floodsub.go | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/floodsub.go b/floodsub.go index 3ecfb33..563f70c 100644 --- a/floodsub.go +++ b/floodsub.go @@ -367,12 +367,14 @@ func (p *PubSub) pushMsg(subs []*Subscription, src peer.ID, msg *Message) { return } - go func() { - p.sendMsg <- sendReq{ - from: src, - msg: msg, - } - }() + sreq := sendReq{from: src, msg: msg} + select { + case p.sendMsg <- sreq: + default: + go func() { + p.sendMsg <- sreq + }() + } } // validate performs validation and only sends the message if all validators succeed