From d0fa79044a666e4d709db11d00d6f644f0c4e9d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Sat, 20 Aug 2022 09:13:00 +0800 Subject: [PATCH] Start outbounds before router --- box.go | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/box.go b/box.go index 89fe1237..8495289e 100644 --- a/box.go +++ b/box.go @@ -168,6 +168,26 @@ func New(ctx context.Context, options option.Options) (*Box, error) { } func (s *Box) Start() error { + for i, out := range s.outbounds { + if starter, isStarter := out.(common.Starter); isStarter { + err := starter.Start() + if err != nil { + for _, in := range s.inbounds { + common.Close(in) + } + for g := 0; g < i; g++ { + common.Close(s.outbounds[g]) + } + var tag string + if out.Tag() == "" { + tag = F.ToString(i) + } else { + tag = out.Tag() + } + return E.Cause(err, "initialize outbound/", out.Type(), "[", tag, "]") + } + } + } err := s.router.Start() if err != nil { return err @@ -187,26 +207,6 @@ func (s *Box) Start() error { return E.Cause(err, "initialize inbound/", in.Type(), "[", tag, "]") } } - for i, out := range s.outbounds { - if starter, isStarter := out.(common.Starter); isStarter { - err = starter.Start() - if err != nil { - for _, in := range s.inbounds { - common.Close(in) - } - for g := 0; g < i; g++ { - common.Close(s.outbounds[g]) - } - var tag string - if out.Tag() == "" { - tag = F.ToString(i) - } else { - tag = out.Tag() - } - return E.Cause(err, "initialize outbound/", out.Type(), "[", tag, "]") - } - } - } if s.clashServer != nil { err = s.clashServer.Start() if err != nil {