From b12cc09f64a67848ab930928cb253e16232b703a Mon Sep 17 00:00:00 2001
From: Jeromy <jeromyj@gmail.com>
Date: Fri, 12 Jun 2015 11:32:06 -0700
Subject: [PATCH] select with context when sending on channels

License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
---
 exchange/bitswap/wantmanager.go | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/exchange/bitswap/wantmanager.go b/exchange/bitswap/wantmanager.go
index 0091724ff..09b3e328a 100644
--- a/exchange/bitswap/wantmanager.go
+++ b/exchange/bitswap/wantmanager.go
@@ -168,11 +168,17 @@ func (mq *msgQueue) runQueue(ctx context.Context) {
 }
 
 func (pm *WantManager) Connected(p peer.ID) {
-	pm.connect <- p
+	select {
+	case pm.connect <- p:
+	case <-pm.ctx.Done():
+	}
 }
 
 func (pm *WantManager) Disconnected(p peer.ID) {
-	pm.disconnect <- p
+	select {
+	case pm.disconnect <- p:
+	case <-pm.ctx.Done():
+	}
 }
 
 // TODO: use goprocess here once i trust it