@@ -673,8 +673,8 @@ func serveHTTPApi(req *cmds.Request, cctx *oldcmds.Context) (<-chan error, error
673
673
return nil , fmt .Errorf ("serveHTTPApi: ConstructNode() failed: %s" , err )
674
674
}
675
675
676
- if err := node .Repo .SetAPIAddr (listeners [0 ].Multiaddr ()); err != nil {
677
- return nil , fmt .Errorf ("serveHTTPApi: SetAPIAddr() failed: %s " , err )
676
+ if err := node .Repo .SetAPIAddr (rewriteMaddrToUseLocalhostIfItsAny ( listeners [0 ].Multiaddr () )); err != nil {
677
+ return nil , fmt .Errorf ("serveHTTPApi: SetAPIAddr() failed: %w " , err )
678
678
}
679
679
680
680
errc := make (chan error )
@@ -695,6 +695,19 @@ func serveHTTPApi(req *cmds.Request, cctx *oldcmds.Context) (<-chan error, error
695
695
return errc , nil
696
696
}
697
697
698
+ func rewriteMaddrToUseLocalhostIfItsAny (maddr ma.Multiaddr ) ma.Multiaddr {
699
+ first , rest := ma .SplitFirst (maddr )
700
+
701
+ switch {
702
+ case first .Equal (manet .IP4Unspecified ):
703
+ return manet .IP4Loopback .Encapsulate (rest )
704
+ case first .Equal (manet .IP6Unspecified ):
705
+ return manet .IP6Loopback .Encapsulate (rest )
706
+ default :
707
+ return maddr // not ip
708
+ }
709
+ }
710
+
698
711
// printSwarmAddrs prints the addresses of the host
699
712
func printSwarmAddrs (node * core.IpfsNode ) {
700
713
if ! node .IsOnline {
@@ -808,7 +821,11 @@ func serveHTTPGateway(req *cmds.Request, cctx *oldcmds.Context) (<-chan error, e
808
821
}
809
822
810
823
if len (listeners ) > 0 {
811
- if err := node .Repo .SetGatewayAddr (listeners [0 ].Addr ()); err != nil {
824
+ addr , err := manet .ToNetAddr (rewriteMaddrToUseLocalhostIfItsAny (listeners [0 ].Multiaddr ()))
825
+ if err != nil {
826
+ return nil , fmt .Errorf ("serveHTTPGateway: manet.ToIP() failed: %w" , err )
827
+ }
828
+ if err := node .Repo .SetGatewayAddr (addr ); err != nil {
812
829
return nil , fmt .Errorf ("serveHTTPGateway: SetGatewayAddr() failed: %w" , err )
813
830
}
814
831
}
@@ -831,7 +848,7 @@ func serveHTTPGateway(req *cmds.Request, cctx *oldcmds.Context) (<-chan error, e
831
848
return errc , nil
832
849
}
833
850
834
- //collects options and opens the fuse mountpoint
851
+ // collects options and opens the fuse mountpoint
835
852
func mountFuse (req * cmds.Request , cctx * oldcmds.Context ) error {
836
853
cfg , err := cctx .GetConfig ()
837
854
if err != nil {
0 commit comments