Procházet zdrojové kódy

fix crash with `-test` (#602)

When running in `-test` mode, `tun` is set to nil. So we should move the
defer into the `!configTest` if block.

    panic: runtime error: invalid memory address or nil pointer dereference
    [signal SIGSEGV: segmentation violation code=0x1 addr=0x28 pc=0x54855c]

    goroutine 1 [running]:
    github.com/slackhq/nebula.Main.func3(0x4000135e80, {0x0, 0x0})
            github.com/slackhq/nebula/main.go:176 +0x2c
    github.com/slackhq/nebula.Main(0x400022e060, 0x1, {0x76faa0, 0x5}, 0x4000230000, 0x0)
            github.com/slackhq/nebula/main.go:316 +0x2414
    main.main()
            github.com/slackhq/nebula/cmd/nebula/main.go:54 +0x540
Wade Simmons před 3 roky
rodič
revize
befce3f990
1 změnil soubory, kde provedl 6 přidání a 6 odebrání
  1. 6 6
      main.go

+ 6 - 6
main.go

@@ -138,13 +138,13 @@ func Main(c *config.C, configTest bool, buildVersion string, logger *logrus.Logg
 		if err != nil {
 		if err != nil {
 			return nil, util.NewContextualError("Failed to get a tun/tap device", nil, err)
 			return nil, util.NewContextualError("Failed to get a tun/tap device", nil, err)
 		}
 		}
-	}
 
 
-	defer func() {
-		if reterr != nil {
-			tun.Close()
-		}
-	}()
+		defer func() {
+			if reterr != nil {
+				tun.Close()
+			}
+		}()
+	}
 
 
 	// set up our UDP listener
 	// set up our UDP listener
 	udpConns := make([]*udp.Conn, routines)
 	udpConns := make([]*udp.Conn, routines)