Only open a message sender when we have messages to send
License: MIT Signed-off-by: Jeromy <jeromyj@gmail.com>
Jeromy committed
Jul 15, 2017 at 20:18 UTC
a93b44b226284159bfefc744040e15e672598674
1 file changed
+10
-9
exchange/bitswap/wantmanager.go
+10
-9
@@ -187,15 +187,6 @@ func (mq *msgQueue) runQueue(ctx context.Context) {
187
}
188
189
func (mq *msgQueue) doWork(ctx context.Context) {
190
- if mq.sender == nil {
191
- err := mq.openSender(ctx)
192
- if err != nil {
193
- log.Infof("cant open message sender to peer %s: %s", mq.p, err)
194
- // TODO: cant connect, what now?
195
- return
196
- }
197
- }
198
-
190
// grab outgoing message
191
mq.outlk.Lock()
192
wlm := mq.out
@@ -206,6 +197,16 @@ func (mq *msgQueue) doWork(ctx context.Context) {
197
mq.out = nil
198
mq.outlk.Unlock()
199
200
+ // NB: only open a stream if we actually have data to send
201
+ if mq.sender == nil {
202
+ err := mq.openSender(ctx)
203
+ if err != nil {
204
+ log.Infof("cant open message sender to peer %s: %s", mq.p, err)
205
+ // TODO: cant connect, what now?
206
+ return
207
+ }
208
+ }
209
+
210
// send wantlist updates
211
for { // try to send this message until we fail.
212
err := mq.sender.SendMsg(ctx, wlm)