Skip to content

Commit 5719b31

Browse files
committed
pass throu
1 parent c645374 commit 5719b31

File tree

4 files changed

+43
-20
lines changed

4 files changed

+43
-20
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ go 1.21
55
require (
66
github.com/CAFxX/httpcompression v0.0.9
77
github.com/felixge/httpsnoop v1.0.4
8-
github.com/ipfs/boxo v0.17.1-0.20240206103407-342b01d27828
8+
github.com/ipfs/boxo v0.17.1-0.20240215095212-e576b559674a
99
github.com/ipfs/go-cid v0.4.1
1010
github.com/ipfs/go-log/v2 v2.5.1
1111
github.com/libp2p/go-libp2p v0.32.2

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -186,8 +186,8 @@ github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpO
186186
github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc=
187187
github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8=
188188
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
189-
github.com/ipfs/boxo v0.17.1-0.20240206103407-342b01d27828 h1:WbZEHuIOqAMb2I67+j6S7uKnPPWBsts09uyec6S2gzY=
190-
github.com/ipfs/boxo v0.17.1-0.20240206103407-342b01d27828/go.mod h1:pIZgTWdm3k3pLF9Uq6MB8JEcW07UDwNJjlXW1HELW80=
189+
github.com/ipfs/boxo v0.17.1-0.20240215095212-e576b559674a h1:44Bfcj6uzx6FOkpJX4qAmSwQy2JaMqpzPNCO7GsuzHM=
190+
github.com/ipfs/boxo v0.17.1-0.20240215095212-e576b559674a/go.mod h1:pIZgTWdm3k3pLF9Uq6MB8JEcW07UDwNJjlXW1HELW80=
191191
github.com/ipfs/go-cid v0.0.3/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM=
192192
github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s=
193193
github.com/ipfs/go-cid v0.4.1/go.mod h1:uQHwDeX4c6CtyrFwdqyhpNcxVewur1M7l7fNU7LKwZk=

server_routers.go

Lines changed: 38 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@ type router interface {
2525

2626
type providersRouter interface {
2727
FindProviders(ctx context.Context, cid cid.Cid, limit int) (iter.ResultIter[types.Record], error)
28-
Provide(ctx context.Context, req *server.ProvideRequest) (time.Duration, error)
28+
Provide(ctx context.Context, req *types.AnnouncementRecord) (time.Duration, error)
2929
}
3030

3131
type peersRouter interface {
3232
FindPeers(ctx context.Context, pid peer.ID, limit int) (iter.ResultIter[*types.PeerRecord], error)
33-
ProvidePeer(ctx context.Context, req *server.ProvidePeerRequest) (time.Duration, error)
33+
ProvidePeer(ctx context.Context, req *types.AnnouncementRecord) (time.Duration, error)
3434
}
3535

3636
type ipnsRouter interface {
@@ -53,9 +53,9 @@ func (r composableRouter) FindProviders(ctx context.Context, key cid.Cid, limit
5353
return r.providers.FindProviders(ctx, key, limit)
5454
}
5555

56-
func (r composableRouter) Provide(ctx context.Context, req *server.ProvideRequest) (time.Duration, error) {
56+
func (r composableRouter) Provide(ctx context.Context, req *types.AnnouncementRecord) (time.Duration, error) {
5757
if r.providers == nil {
58-
return req.TTL, nil
58+
return 0, nil
5959
}
6060
return r.providers.Provide(ctx, req)
6161
}
@@ -67,9 +67,9 @@ func (r composableRouter) FindPeers(ctx context.Context, pid peer.ID, limit int)
6767
return r.peers.FindPeers(ctx, pid, limit)
6868
}
6969

70-
func (r composableRouter) ProvidePeer(ctx context.Context, req *server.ProvidePeerRequest) (time.Duration, error) {
70+
func (r composableRouter) ProvidePeer(ctx context.Context, req *types.AnnouncementRecord) (time.Duration, error) {
7171
if r.peers == nil {
72-
return req.TTL, nil
72+
return 0, nil
7373
}
7474
return r.peers.ProvidePeer(ctx, req)
7575
}
@@ -218,13 +218,13 @@ func (mi *manyIter[T]) Close() error {
218218
return err
219219
}
220220

221-
func (r parallelRouter) Provide(ctx context.Context, req *server.ProvideRequest) (time.Duration, error) {
221+
func (r parallelRouter) Provide(ctx context.Context, req *types.AnnouncementRecord) (time.Duration, error) {
222222
return provide(ctx, r.routers, func(ctx context.Context, r router) (time.Duration, error) {
223223
return r.Provide(ctx, req)
224224
})
225225
}
226226

227-
func (r parallelRouter) ProvidePeer(ctx context.Context, req *server.ProvidePeerRequest) (time.Duration, error) {
227+
func (r parallelRouter) ProvidePeer(ctx context.Context, req *types.AnnouncementRecord) (time.Duration, error) {
228228
return provide(ctx, r.routers, func(ctx context.Context, r router) (time.Duration, error) {
229229
return r.ProvidePeer(ctx, req)
230230
})
@@ -374,7 +374,9 @@ func (d libp2pRouter) FindProviders(ctx context.Context, key cid.Cid, limit int)
374374
}), nil
375375
}
376376

377-
func (d libp2pRouter) Provide(ctx context.Context, req *server.ProvideRequest) (time.Duration, error) {
377+
func (d libp2pRouter) Provide(ctx context.Context, req *types.AnnouncementRecord) (time.Duration, error) {
378+
// NOTE: this router cannot provide further to the DHT, since we can only
379+
// announce CIDs that our own node has, which is not the case.
378380
return 0, routing.ErrNotSupported
379381
}
380382

@@ -399,7 +401,7 @@ func (d libp2pRouter) FindPeers(ctx context.Context, pid peer.ID, limit int) (it
399401
return iter.ToResultIter[*types.PeerRecord](iter.FromSlice[*types.PeerRecord]([]*types.PeerRecord{rec})), nil
400402
}
401403

402-
func (r libp2pRouter) ProvidePeer(ctx context.Context, req *server.ProvidePeerRequest) (time.Duration, error) {
404+
func (r libp2pRouter) ProvidePeer(ctx context.Context, req *types.AnnouncementRecord) (time.Duration, error) {
403405
return 0, routing.ErrNotSupported
404406
}
405407

@@ -475,14 +477,36 @@ func (d clientRouter) FindProviders(ctx context.Context, cid cid.Cid, limit int)
475477
return d.Client.FindProviders(ctx, cid)
476478
}
477479

478-
func (d clientRouter) Provide(ctx context.Context, req *server.ProvideRequest) (time.Duration, error) {
479-
return 0, routing.ErrNotSupported
480+
func (d clientRouter) Provide(ctx context.Context, req *types.AnnouncementRecord) (time.Duration, error) {
481+
return d.provide(func() (iter.ResultIter[*types.AnnouncementRecord], error) {
482+
return d.Client.ProvideRecords(ctx, req)
483+
})
480484
}
481485

482486
func (d clientRouter) FindPeers(ctx context.Context, pid peer.ID, limit int) (iter.ResultIter[*types.PeerRecord], error) {
483487
return d.Client.FindPeers(ctx, pid)
484488
}
485489

486-
func (d clientRouter) ProvidePeer(ctx context.Context, req *server.ProvidePeerRequest) (time.Duration, error) {
487-
return 0, routing.ErrNotSupported
490+
func (d clientRouter) ProvidePeer(ctx context.Context, req *types.AnnouncementRecord) (time.Duration, error) {
491+
return d.provide(func() (iter.ResultIter[*types.AnnouncementRecord], error) {
492+
return d.Client.ProvidePeerRecords(ctx, req)
493+
})
494+
}
495+
496+
func (d clientRouter) provide(do func() (iter.ResultIter[*types.AnnouncementRecord], error)) (time.Duration, error) {
497+
resIter, err := do()
498+
if err != nil {
499+
return 0, err
500+
}
501+
502+
records, err := iter.ReadAllResults(resIter)
503+
if err != nil {
504+
return 0, err
505+
}
506+
507+
if len(records) != 1 {
508+
return 0, errors.New("invalid number of records returned")
509+
}
510+
511+
return records[0].Payload.TTL, nil
488512
}

server_routers_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import (
99

1010
"github.com/ipfs/boxo/ipns"
1111
"github.com/ipfs/boxo/path"
12-
"github.com/ipfs/boxo/routing/http/server"
1312
"github.com/ipfs/boxo/routing/http/types"
1413
"github.com/ipfs/boxo/routing/http/types/iter"
1514
"github.com/ipfs/go-cid"
@@ -33,7 +32,7 @@ func (m *mockRouter) FindProviders(ctx context.Context, key cid.Cid, limit int)
3332
return args.Get(0).(iter.ResultIter[types.Record]), args.Error(1)
3433
}
3534

36-
func (m *mockRouter) Provide(ctx context.Context, req *server.ProvideRequest) (time.Duration, error) {
35+
func (m *mockRouter) Provide(ctx context.Context, req *types.AnnouncementRecord) (time.Duration, error) {
3736
args := m.Called(ctx, req)
3837
return args.Get(0).(time.Duration), args.Error(1)
3938
}
@@ -46,7 +45,7 @@ func (m *mockRouter) FindPeers(ctx context.Context, pid peer.ID, limit int) (ite
4645
return args.Get(0).(iter.ResultIter[*types.PeerRecord]), args.Error(1)
4746
}
4847

49-
func (m *mockRouter) ProvidePeer(ctx context.Context, req *server.ProvidePeerRequest) (time.Duration, error) {
48+
func (m *mockRouter) ProvidePeer(ctx context.Context, req *types.AnnouncementRecord) (time.Duration, error) {
5049
args := m.Called(ctx, req)
5150
return args.Get(0).(time.Duration), args.Error(1)
5251
}

0 commit comments

Comments
 (0)