@cryptotaxi247 / kubo / commits / 1811f1efa

ctx.Done fixes

thanks @whyrusleeping for finding these.

Juan Batiz-Benet committed Feb 9, 2015 at 23:17 UTC 1811f1efacd0b8a0e1cddc9c6e0f756ed73fd1c9
2 files changed +14 -3
p2p/crypto/secio/rw.go
+8 -2
@@ -224,7 +224,10 @@ func writeMsgCtx(ctx context.Context, w msgio.Writer, msg proto.Message) ([]byte
224 done := make(chan error)
225 go func(m []byte) {
226 err := w.WriteMsg(m)
227 - done <- err
227 + select {
228 + case done <- err:
229 + case <-ctx.Done():
230 + }
231 }(enc)
232
233 select {
@@ -243,7 +246,10 @@ func readMsgCtx(ctx context.Context, r msgio.Reader, p proto.Message) ([]byte, e
246 go func() {
247 var err error
248 msg, err = r.ReadMsg()
246 - done <- err
249 + select {
250 + case done <- err:
251 + case <-ctx.Done():
252 + }
253 }()
254
255 select {
p2p/net/conn/dial.go
+6 -1
@@ -44,7 +44,12 @@ func (d *Dialer) Dial(ctx context.Context, raddr ma.Multiaddr, remote peer.ID) (
44
45 // do it async to ensure we respect don contexteone
46 go func() {
47 - defer func() { done <- struct{}{} }()
47 + defer func() {
48 + select {
49 + case done <- struct{}{}:
50 + case <-ctx.Done():
51 + }
52 + }()
53
54 c, err := newSingleConn(ctx, d.LocalPeer, remote, maconn)
55 if err != nil {