diff --git a/goagain.go b/goagain.go index a69a2fd..82fe5f4 100644 --- a/goagain.go +++ b/goagain.go @@ -164,13 +164,14 @@ func Kill() error { } // Reconstruct a net.Listener from a file descriptior and name specified in the -// environment. Deal with Go's insistence on dup(2)ing file descriptors. +// environment. func Listener() (l net.Listener, err error) { var fd uintptr if _, err = fmt.Sscan(os.Getenv("GOAGAIN_FD"), &fd); nil != err { return } - l, err = net.FileListener(os.NewFile(fd, os.Getenv("GOAGAIN_NAME"))) + f := os.NewFile(fd, os.Getenv("GOAGAIN_NAME")) + l, err = net.FileListener(f) if nil != err { return } @@ -183,7 +184,7 @@ func Listener() (l net.Listener, err error) { ) return } - if err = syscall.Close(int(fd)); nil != err { + if err = f.Close(); nil != err { return } return