@@ -673,8 +673,8 @@ func serveHTTPApi(req *cmds.Request, cctx *oldcmds.Context) (<-chan error, error
673673 return nil , fmt .Errorf ("serveHTTPApi: ConstructNode() failed: %s" , err )
674674 }
675675
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 )
678678 }
679679
680680 errc := make (chan error )
@@ -695,6 +695,19 @@ func serveHTTPApi(req *cmds.Request, cctx *oldcmds.Context) (<-chan error, error
695695 return errc , nil
696696}
697697
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+
698711// printSwarmAddrs prints the addresses of the host
699712func printSwarmAddrs (node * core.IpfsNode ) {
700713 if ! node .IsOnline {
@@ -808,7 +821,11 @@ func serveHTTPGateway(req *cmds.Request, cctx *oldcmds.Context) (<-chan error, e
808821 }
809822
810823 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 {
812829 return nil , fmt .Errorf ("serveHTTPGateway: SetGatewayAddr() failed: %w" , err )
813830 }
814831 }
@@ -831,7 +848,7 @@ func serveHTTPGateway(req *cmds.Request, cctx *oldcmds.Context) (<-chan error, e
831848 return errc , nil
832849}
833850
834- //collects options and opens the fuse mountpoint
851+ // collects options and opens the fuse mountpoint
835852func mountFuse (req * cmds.Request , cctx * oldcmds.Context ) error {
836853 cfg , err := cctx .GetConfig ()
837854 if err != nil {
0 commit comments