Skip to content

Commit 4d542cb

Browse files
Merge pull request ipfs#2826 from ipfs/fix/dht-ctx-respect
respect contexts while reading messages in dht
2 parents 2b3334c + cd34bf8 commit 4d542cb

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

dht_net.go

+15-1
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ func (ms *messageSender) SendRequest(ctx context.Context, pmes *pb.Message) (*pb
214214
log.Event(ctx, "dhtSentMessage", ms.dht.self, ms.p, pmes)
215215

216216
mes := new(pb.Message)
217-
if err := ms.r.ReadMsg(mes); err != nil {
217+
if err := ms.ctxReadMsg(ctx, mes); err != nil {
218218
ms.s.Close()
219219
ms.s = nil
220220
return nil, err
@@ -227,3 +227,17 @@ func (ms *messageSender) SendRequest(ctx context.Context, pmes *pb.Message) (*pb
227227

228228
return mes, nil
229229
}
230+
231+
func (ms *messageSender) ctxReadMsg(ctx context.Context, mes *pb.Message) error {
232+
errc := make(chan error, 1)
233+
go func() {
234+
errc <- ms.r.ReadMsg(mes)
235+
}()
236+
237+
select {
238+
case err := <-errc:
239+
return err
240+
case <-ctx.Done():
241+
return ctx.Err()
242+
}
243+
}

0 commit comments

Comments
 (0)