From c8513239bf730b35fdedf43021f5e799d87d57f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Gronowski?= Date: Wed, 15 Apr 2026 14:50:23 +0200 Subject: [PATCH] daemon/listeners: Support Unix socket on Windows MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Allow the daemon on Windows to listen on a UNIX socket. Signed-off-by: Paweł Gronowski --- daemon/listeners/listeners_windows.go | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/daemon/listeners/listeners_windows.go b/daemon/listeners/listeners_windows.go index 82ce0dee41..65e9cd0aaf 100644 --- a/daemon/listeners/listeners_windows.go +++ b/daemon/listeners/listeners_windows.go @@ -14,6 +14,12 @@ import ( func Init(proto, addr, socketGroup string, tlsConfig *tls.Config) ([]net.Listener, error) { ls := []net.Listener{} + // Windows allows a comma-separated list of groups and/or users to be set. + var additionalUsersAndGroups []string + if socketGroup != "" { + additionalUsersAndGroups = strings.Split(socketGroup, ",") + } + switch proto { case "tcp": l, err := sockets.NewTCPSocket(addr, tlsConfig) @@ -23,11 +29,6 @@ func Init(proto, addr, socketGroup string, tlsConfig *tls.Config) ([]net.Listene ls = append(ls, l) case "npipe": - // Windows allows a comma-separated list of groups and/or users to be set. - var additionalUsersAndGroups []string - if socketGroup != "" { - additionalUsersAndGroups = strings.Split(socketGroup, ",") - } sddl, err := getSecurityDescriptor(additionalUsersAndGroups) if err != nil { return nil, err @@ -43,8 +44,14 @@ func Init(proto, addr, socketGroup string, tlsConfig *tls.Config) ([]net.Listene } ls = append(ls, l) + case "unix": + l, err := sockets.NewUnixSocket(addr, additionalUsersAndGroups) + if err != nil { + return nil, err + } + ls = append(ls, l) default: - return nil, fmt.Errorf("invalid protocol format: windows only supports tcp and npipe") + return nil, fmt.Errorf("invalid protocol format: windows only supports tcp, unix and npipe") } return ls, nil