mirror of
https://github.com/ipfs/kubo.git
synced 2025-07-02 03:28:25 +08:00
Merge pull request #2826 from ipfs/fix/dht-ctx-respect
respect contexts while reading messages in dht
This commit is contained in:
@ -214,7 +214,7 @@ func (ms *messageSender) SendRequest(ctx context.Context, pmes *pb.Message) (*pb
|
|||||||
log.Event(ctx, "dhtSentMessage", ms.dht.self, ms.p, pmes)
|
log.Event(ctx, "dhtSentMessage", ms.dht.self, ms.p, pmes)
|
||||||
|
|
||||||
mes := new(pb.Message)
|
mes := new(pb.Message)
|
||||||
if err := ms.r.ReadMsg(mes); err != nil {
|
if err := ms.ctxReadMsg(ctx, mes); err != nil {
|
||||||
ms.s.Close()
|
ms.s.Close()
|
||||||
ms.s = nil
|
ms.s = nil
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -227,3 +227,17 @@ func (ms *messageSender) SendRequest(ctx context.Context, pmes *pb.Message) (*pb
|
|||||||
|
|
||||||
return mes, nil
|
return mes, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (ms *messageSender) ctxReadMsg(ctx context.Context, mes *pb.Message) error {
|
||||||
|
errc := make(chan error, 1)
|
||||||
|
go func() {
|
||||||
|
errc <- ms.r.ReadMsg(mes)
|
||||||
|
}()
|
||||||
|
|
||||||
|
select {
|
||||||
|
case err := <-errc:
|
||||||
|
return err
|
||||||
|
case <-ctx.Done():
|
||||||
|
return ctx.Err()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user