diff options
Diffstat (limited to 'helpers')
-rw-r--r-- | helpers/general.go | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/helpers/general.go b/helpers/general.go index b5f6d0dba..e31bbfc9d 100644 --- a/helpers/general.go +++ b/helpers/general.go @@ -62,6 +62,21 @@ func FindAvailablePort() (*net.TCPAddr, error) { return nil, err } +// TCPListen starts listening on a valid TCP port. +func TCPListen() (net.Listener, *net.TCPAddr, error) { + l, err := net.Listen("tcp", ":0") + if err != nil { + return nil, nil, err + } + addr := l.Addr() + if a, ok := addr.(*net.TCPAddr); ok { + return l, a, nil + } + l.Close() + return nil, nil, fmt.Errorf("unable to obtain a valid tcp port: %v", addr) + +} + // InStringArray checks if a string is an element of a slice of strings // and returns a boolean value. func InStringArray(arr []string, el string) bool { |