Jelajahi Sumber

Start outbounds before router

世界 3 tahun lalu
induk
melakukan
d0fa79044a
1 mengubah file dengan 20 tambahan dan 20 penghapusan
  1. 20 20
      box.go

+ 20 - 20
box.go

@@ -168,28 +168,9 @@ func New(ctx context.Context, options option.Options) (*Box, error) {
 }
 
 func (s *Box) Start() error {
-	err := s.router.Start()
-	if err != nil {
-		return err
-	}
-	for i, in := range s.inbounds {
-		err = in.Start()
-		if err != nil {
-			for g := 0; g < i; g++ {
-				s.inbounds[g].Close()
-			}
-			var tag string
-			if in.Tag() == "" {
-				tag = F.ToString(i)
-			} else {
-				tag = in.Tag()
-			}
-			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()
+			err := starter.Start()
 			if err != nil {
 				for _, in := range s.inbounds {
 					common.Close(in)
@@ -207,6 +188,25 @@ func (s *Box) Start() error {
 			}
 		}
 	}
+	err := s.router.Start()
+	if err != nil {
+		return err
+	}
+	for i, in := range s.inbounds {
+		err = in.Start()
+		if err != nil {
+			for g := 0; g < i; g++ {
+				s.inbounds[g].Close()
+			}
+			var tag string
+			if in.Tag() == "" {
+				tag = F.ToString(i)
+			} else {
+				tag = in.Tag()
+			}
+			return E.Cause(err, "initialize inbound/", in.Type(), "[", tag, "]")
+		}
+	}
 	if s.clashServer != nil {
 		err = s.clashServer.Start()
 		if err != nil {