@@ -11,6 +11,8 @@ import (
11
11
"strings"
12
12
"time"
13
13
14
+ "github.com/filecoin-project/curio/lib/storiface"
15
+ "github.com/filecoin-project/curio/lib/urltomultiaddr"
14
16
"github.com/gorilla/mux"
15
17
lru "github.com/hashicorp/golang-lru/v2"
16
18
"github.com/ipfs/go-cid"
@@ -40,9 +42,9 @@ import (
40
42
"github.com/filecoin-project/curio/lib/pieceprovider"
41
43
42
44
"github.com/filecoin-project/lotus/node/modules/dtypes"
43
- "github.com/filecoin-project/lotus/storage/sealer/storiface"
44
45
)
45
46
47
+ const IPNIRoutePath = "/ipni-provider"
46
48
const IPNIPath = "/ipni/v1/ad/"
47
49
const ProviderPath = "/ipni-provider"
48
50
@@ -141,7 +143,11 @@ func NewProvider(api ipniAPI, deps *deps.Deps) (*Provider, error) {
141
143
var httpServerAddresses []multiaddr.Multiaddr
142
144
143
145
for _ , a := range deps .Cfg .Market .HTTP .AnnounceAddresses {
144
- addr , err := multiaddr .NewMultiaddr (a )
146
+ addr , err := urltomultiaddr .UrlToMultiaddr (a )
147
+ if err != nil {
148
+ return nil , err
149
+ }
150
+ addr , err = multiaddr .NewMultiaddr (addr .String () + IPNIRoutePath )
145
151
if err != nil {
146
152
return nil , err
147
153
}
@@ -393,6 +399,9 @@ func (p *Provider) GetEntry(block cid.Cid, provider string) ([]byte, error) {
393
399
394
400
mis := make (index.MultihashIndexSorted )
395
401
err = mis .Load (recs )
402
+ if err != nil {
403
+ return nil , xerrors .Errorf ("failed to load indexed in multihash sorter: %w" , err )
404
+ }
396
405
397
406
// To avoid - Cannot assert pinter to interface
398
407
idxF := func (sorted * index.MultihashIndexSorted ) index.Index {
@@ -516,7 +525,7 @@ func contentRouter(r *mux.Router, p *Provider) {
516
525
}
517
526
518
527
func Routes (r * mux.Router , p * Provider ) {
519
- contentRouter (r .PathPrefix ("/ipni-provider" ).Subrouter (), p )
528
+ contentRouter (r .PathPrefix (IPNIRoutePath ).Subrouter (), p )
520
529
}
521
530
522
531
func (p * Provider ) StartPublishing (ctx context.Context ) {
@@ -572,6 +581,24 @@ func (p *Provider) publishhttp(ctx context.Context, adCid cid.Cid, peer string)
572
581
return fmt .Errorf ("cannot create http announce sender: %w" , err )
573
582
}
574
583
584
+ addrs , err := p .getHTTPAddressForPeer (peer )
585
+ if err != nil {
586
+ return fmt .Errorf ("cannot create provider http addresses: %w" , err )
587
+ }
588
+
575
589
log .Infow ("Announcing advertisements over HTTP" , "urls" , p .announceURLs )
576
- return announce .Send (ctx , adCid , p .httpServerAddresses , httpSender )
590
+ return announce .Send (ctx , adCid , addrs , httpSender )
591
+ }
592
+
593
+ func (p * Provider ) getHTTPAddressForPeer (peer string ) ([]multiaddr.Multiaddr , error ) {
594
+ var ret []multiaddr.Multiaddr
595
+ for _ , addr := range p .httpServerAddresses {
596
+ a , err := multiaddr .NewMultiaddr (addr .String () + "/" + peer )
597
+ if err != nil {
598
+ return nil , err
599
+ }
600
+ ret = append (ret , a )
601
+ }
602
+
603
+ return ret , nil
577
604
}
0 commit comments