@@ -439,8 +439,6 @@ func (cfg *Config) newBasicHost(swrm *swarm.Swarm, eventBus event.Bus) (*bhost.B
439439 DisableIdentifyAddressDiscovery : cfg .DisableIdentifyAddressDiscovery ,
440440 EnableAutoNATv2 : cfg .EnableAutoNATv2 ,
441441 AutoNATv2Dialer : autonatv2Dialer ,
442- EnableAutoRelay : cfg .EnableAutoRelay ,
443- AutoRelayOpts : cfg .AutoRelayOpts ,
444442 })
445443 if err != nil {
446444 return nil , err
@@ -544,6 +542,28 @@ func (cfg *Config) NewNode() (host.Host, error) {
544542 )
545543 }
546544
545+ // enable autorelay
546+ fxopts = append (fxopts ,
547+ fx .Invoke (func (h * bhost.BasicHost , lifecycle fx.Lifecycle ) error {
548+ if cfg .EnableAutoRelay {
549+ if ! cfg .DisableMetrics {
550+ mt := autorelay .WithMetricsTracer (
551+ autorelay .NewMetricsTracer (autorelay .WithRegisterer (cfg .PrometheusRegisterer )))
552+ mtOpts := []autorelay.Option {mt }
553+ cfg .AutoRelayOpts = append (mtOpts , cfg .AutoRelayOpts ... )
554+ }
555+
556+ ar , err := autorelay .NewAutoRelay (h , cfg .AutoRelayOpts ... )
557+ if err != nil {
558+ return err
559+ }
560+ lifecycle .Append (fx .StartStopHook (ar .Start , ar .Close ))
561+ return nil
562+ }
563+ return nil
564+ }),
565+ )
566+
547567 var bh * bhost.BasicHost
548568 fxopts = append (fxopts , fx .Invoke (func (bho * bhost.BasicHost ) { bh = bho }))
549569 fxopts = append (fxopts , fx .Invoke (func (h * bhost.BasicHost , lifecycle fx.Lifecycle ) {
@@ -558,10 +578,12 @@ func (cfg *Config) NewNode() (host.Host, error) {
558578 fxopts = append (fxopts , cfg .UserFxOptions ... )
559579
560580 app := fx .New (fxopts ... )
561- if app .Err () != nil {
562- return nil , fmt . Errorf ( "failed to create host: %w" , app . Err ())
581+ if err := app .Start ( context . Background ()); err != nil {
582+ return nil , err
563583 }
584+
564585 if err := cfg .addAutoNAT (bh ); err != nil {
586+ app .Stop (context .Background ())
565587 if cfg .Routing != nil {
566588 rh .Close ()
567589 } else {
@@ -570,10 +592,6 @@ func (cfg *Config) NewNode() (host.Host, error) {
570592 return nil , err
571593 }
572594
573- if err := app .Start (context .Background ()); err != nil {
574- return nil , err
575- }
576-
577595 if cfg .Routing != nil {
578596 return & closableRoutedHost {App : app , RoutedHost : rh }, nil
579597 }
0 commit comments