diff --git a/prefork.go b/prefork.go index 7d2086e8..32c97593 100644 --- a/prefork.go +++ b/prefork.go @@ -17,7 +17,10 @@ const ( envPreforkChildVal = "1" ) -var testPreforkMaster = false +var ( + testPreforkMaster = false + dummyChildCmd = "date" +) // IsChild determines if the current process is a result of Prefork func (app *App) IsChild() bool { @@ -84,7 +87,7 @@ func (app *App) prefork(addr string, tlsconfig ...*tls.Config) (err error) { // When test prefork master, // just start the child process // a cmd on all os is best - cmd = exec.Command("date") + cmd = exec.Command(dummyChildCmd) } cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr @@ -114,9 +117,5 @@ func (app *App) prefork(addr string, tlsconfig ...*tls.Config) (err error) { } // return error if child crashes - for sig := range channel { - return sig.err - } - - return + return (<-channel).err } diff --git a/prefork_test.go b/prefork_test.go index d06117a2..f640c220 100644 --- a/prefork_test.go +++ b/prefork_test.go @@ -12,11 +12,12 @@ func Test_App_Prefork_Child_Process(t *testing.T) { utils.AssertEqual(t, nil, os.Setenv(envPreforkChildKey, envPreforkChildVal)) defer os.Setenv(envPreforkChildKey, "") - app := New(&Settings{ - DisableStartupMessage: true, - }) + app := New() app.init() + err := app.prefork("invalid") + utils.AssertEqual(t, false, err == nil) + go func() { time.Sleep(1000 * time.Millisecond) utils.AssertEqual(t, nil, app.Shutdown()) @@ -28,9 +29,7 @@ func Test_App_Prefork_Child_Process(t *testing.T) { func Test_App_Prefork_Main_Process(t *testing.T) { testPreforkMaster = true - app := New(&Settings{ - DisableStartupMessage: true, - }) + app := New() app.init() go func() { @@ -39,4 +38,9 @@ func Test_App_Prefork_Main_Process(t *testing.T) { }() utils.AssertEqual(t, nil, app.prefork("127.0.0.1:")) + + dummyChildCmd = "invalid" + + err := app.prefork("127.0.0.1:") + utils.AssertEqual(t, false, err == nil) } diff --git a/reuseport.go b/reuseport.go index bd696d76..5afded6a 100644 --- a/reuseport.go +++ b/reuseport.go @@ -4,7 +4,6 @@ package fiber import ( "net" - "strings" tcplisten "github.com/valyala/tcplisten" ) @@ -38,9 +37,5 @@ func reuseport(network, addr string) (net.Listener, error) { DeferAccept: true, FastOpen: true, } - ln, err := cfg.NewListener(network, addr) - if err != nil && strings.Contains(err.Error(), "SO_REUSEPORT") { - return nil, err - } - return ln, err + return cfg.NewListener(network, addr) }