mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
f2614f2107
Signed-off-by: Alexander Morozov <lk4d4@docker.com>
31 lines
876 B
Go
31 lines
876 B
Go
// +build windows
|
|
|
|
package xnet
|
|
|
|
import (
|
|
"net"
|
|
"time"
|
|
|
|
"github.com/Microsoft/go-winio"
|
|
)
|
|
|
|
// ListenLocal opens a local socket for control communication
|
|
func ListenLocal(socket string) (net.Listener, error) {
|
|
// set up ACL for the named pipe
|
|
// allow Administrators and SYSTEM
|
|
sddl := "D:P(A;;GA;;;BA)(A;;GA;;;SY)"
|
|
c := winio.PipeConfig{
|
|
SecurityDescriptor: sddl,
|
|
MessageMode: true, // Use message mode so that CloseWrite() is supported
|
|
InputBufferSize: 65536, // Use 64KB buffers to improve performance
|
|
OutputBufferSize: 65536,
|
|
}
|
|
// on windows, our socket is actually a named pipe
|
|
return winio.ListenPipe(socket, &c)
|
|
}
|
|
|
|
// DialTimeoutLocal is a DialTimeout function for local sockets
|
|
func DialTimeoutLocal(socket string, timeout time.Duration) (net.Conn, error) {
|
|
// On windows, we dial a named pipe
|
|
return winio.DialPipe(socket, &timeout)
|
|
}
|