Feat #1374: ipfshttp: do not swarm connect to more than 10 origins.
Disallow silly behaviours by default.
This commit is contained in:
parent
625b344cb7
commit
1952693ab5
|
@ -326,12 +326,15 @@ func (ipfs *Connector) Pin(ctx context.Context, pin *api.Pin) error {
|
|||
ctx, cancelRequest := context.WithCancel(ctx)
|
||||
defer cancelRequest()
|
||||
|
||||
// If the pin has origins, tell ipfs to connect
|
||||
for _, orig := range pin.Origins {
|
||||
// Attempt to connect to a maximum of 10 origins,
|
||||
// in the background, ignoring errors.
|
||||
logger.Debugf("swarm-connect to origin before pinning: %s", orig)
|
||||
// If the pin has origins, tell ipfs to connect to a maximum of 10.
|
||||
bound := len(pin.Origins)
|
||||
if bound > 10 {
|
||||
bound = 10
|
||||
}
|
||||
for _, orig := range pin.Origins[0:bound] {
|
||||
// do it in the background, ignoring errors.
|
||||
go func(o string) {
|
||||
logger.Debugf("swarm-connect to origin before pinning: %s", o)
|
||||
_, err := ipfs.postCtx(
|
||||
ctx,
|
||||
fmt.Sprintf("swarm/connect?arg=%s", o),
|
||||
|
@ -342,7 +345,7 @@ func (ipfs *Connector) Pin(ctx context.Context, pin *api.Pin) error {
|
|||
logger.Debug(err)
|
||||
return
|
||||
}
|
||||
logger.Debugf("swarm-connect success to origin: %s", orig)
|
||||
logger.Debugf("swarm-connect success to origin: %s", o)
|
||||
}(url.QueryEscape(orig.String()))
|
||||
}
|
||||
|
||||
|
|
|
@ -8,7 +8,6 @@ import (
|
|||
"time"
|
||||
|
||||
logging "github.com/ipfs/go-log/v2"
|
||||
"github.com/multiformats/go-multiaddr"
|
||||
ma "github.com/multiformats/go-multiaddr"
|
||||
|
||||
merkledag "github.com/ipfs/go-merkledag"
|
||||
|
@ -22,8 +21,7 @@ func init() {
|
|||
|
||||
func testIPFSConnector(t *testing.T) (*Connector, *test.IpfsMock) {
|
||||
mock := test.NewIpfsMock(t)
|
||||
nodeMAddr, _ := ma.NewMultiaddr(fmt.Sprintf("/ip4/%s/tcp/%d",
|
||||
mock.Addr, mock.Port))
|
||||
nodeMAddr := ma.StringCast(fmt.Sprintf("/ip4/%s/tcp/%d", mock.Addr, mock.Port))
|
||||
|
||||
cfg := &Config{}
|
||||
cfg.Default()
|
||||
|
@ -77,9 +75,9 @@ func TestPin(t *testing.T) {
|
|||
defer ipfs.Shutdown(ctx)
|
||||
|
||||
pin := api.PinCid(test.Cid1)
|
||||
pin.Origins = []multiaddr.Multiaddr{
|
||||
multiaddr.StringCast("/ip4/1.2.3.4/tcp/1234/p2p/12D3KooWKewdAMAU3WjYHm8qkAJc5eW6KHbHWNigWraXXtE1UCng"),
|
||||
multiaddr.StringCast("/ip4/2.3.3.4/tcp/1234/p2p/12D3KooWF6BgwX966ge5AVFs9Gd2wVTBmypxZVvaBR12eYnUmXkR"),
|
||||
pin.Origins = []ma.Multiaddr{
|
||||
ma.StringCast("/ip4/1.2.3.4/tcp/1234/p2p/12D3KooWKewdAMAU3WjYHm8qkAJc5eW6KHbHWNigWraXXtE1UCng"),
|
||||
ma.StringCast("/ip4/2.3.3.4/tcp/1234/p2p/12D3KooWF6BgwX966ge5AVFs9Gd2wVTBmypxZVvaBR12eYnUmXkR"),
|
||||
}
|
||||
err := ipfs.Pin(ctx, pin)
|
||||
if err != nil {
|
||||
|
|
Loading…
Reference in New Issue
Block a user