From 806341e089ed3e5ac825c4844f6fa4d437fdb642 Mon Sep 17 00:00:00 2001 From: Matthew Holt Date: Wed, 21 Jun 2023 17:16:01 -0600 Subject: [PATCH] core: Properly preserve unix sockets (fix #5568) --- listeners.go | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/listeners.go b/listeners.go index 672bd833..1429b14e 100644 --- a/listeners.go +++ b/listeners.go @@ -189,13 +189,15 @@ func (na NetworkAddress) listen(ctx context.Context, portOffset uint, config net // if new listener is a unix socket, make sure we can reuse it later // (we do our own "unlink on close" -- not required, but more tidy) one := int32(1) - switch unix := ln.(type) { - case *net.UnixListener: - unix.SetUnlinkOnClose(false) - ln = &unixListener{unix, lnKey, &one} - unixSockets[lnKey] = ln.(*unixListener) + switch lnValue := ln.(type) { + case deleteListener: + if unix, ok := lnValue.Listener.(*net.UnixListener); ok { + unix.SetUnlinkOnClose(false) + ln = &unixListener{unix, lnKey, &one} + unixSockets[lnKey] = ln.(*unixListener) + } case *net.UnixConn: - ln = &unixConn{unix, address, lnKey, &one} + ln = &unixConn{lnValue, address, lnKey, &one} unixSockets[lnKey] = ln.(*unixConn) }