提交 798569bb 作者: Jeromy

don't provide same block twice during call to dht provide

License: MIT
Signed-off-by: 's avatarJeromy <why@ipfs.io>
上级 8aac8446
......@@ -352,6 +352,7 @@ func provideKeys(ctx context.Context, r routing.IpfsRouting, keys []key.Key) {
}
func provideKeysRec(ctx context.Context, r routing.IpfsRouting, dserv dag.DAGService, keys []key.Key) {
provided := make(map[key.Key]struct{})
for _, k := range keys {
kset := key.NewKeySet()
node, err := dserv.Get(ctx, k)
......@@ -371,6 +372,10 @@ func provideKeysRec(ctx context.Context, r routing.IpfsRouting, dserv dag.DAGSer
}
for _, k := range kset.Keys() {
if _, ok := provided[k]; ok {
continue
}
err = r.Provide(ctx, k)
if err != nil {
notif.PublishQueryEvent(ctx, &notif.QueryEvent{
......@@ -379,6 +384,7 @@ func provideKeysRec(ctx context.Context, r routing.IpfsRouting, dserv dag.DAGSer
})
return
}
provided[k] = struct{}{}
}
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论