diff --git a/uapi_darwin.go b/uapi_darwin.go index 0f6d904..a5f2c3b 100644 --- a/uapi_darwin.go +++ b/uapi_darwin.go @@ -57,7 +57,7 @@ func (l *UAPIListener) Close() error { } func (l *UAPIListener) Addr() net.Addr { - return nil + return l.listener.Addr() } func UAPIListen(name string, file *os.File) (net.Listener, error) { @@ -75,6 +75,10 @@ func UAPIListen(name string, file *os.File) (net.Listener, error) { connErr: make(chan error, 1), } + if unixListener, ok := listener.(*net.UnixListener); ok { + unixListener.SetUnlinkOnClose(true) + } + socketPath := path.Join( socketDirectory, fmt.Sprintf(socketName, name), diff --git a/uapi_linux.go b/uapi_linux.go index 67024e9..45be0f5 100644 --- a/uapi_linux.go +++ b/uapi_linux.go @@ -46,8 +46,8 @@ func (l *UAPIListener) Accept() (net.Conn, error) { func (l *UAPIListener) Close() error { err1 := unix.Close(l.inotifyFd) - err2 := l.listener.Close() - err3 := l.inotifyRWCancel.Cancel() + err2 := l.inotifyRWCancel.Cancel() + err3 := l.listener.Close() if err1 != nil { return err1 } @@ -58,7 +58,7 @@ func (l *UAPIListener) Close() error { } func (l *UAPIListener) Addr() net.Addr { - return nil + return l.listener.Addr() } func UAPIListen(name string, file *os.File) (net.Listener, error) { @@ -70,6 +70,10 @@ func UAPIListen(name string, file *os.File) (net.Listener, error) { return nil, err } + if unixListener, ok := listener.(*net.UnixListener); ok { + unixListener.SetUnlinkOnClose(true) + } + uapi := &UAPIListener{ listener: listener, connNew: make(chan net.Conn, 1),