From 59573fb3c6e8e55278c973b9c799db6ed9c0f9c7 Mon Sep 17 00:00:00 2001 From: John Starks Date: Tue, 15 Mar 2016 15:11:02 -0700 Subject: [PATCH] Windows: add support for CloseWrite() to npipe transport This relies on changes to go-winio to support CloseWrite() when the pipe is in message mode. This fixes an issue where stdin is not properly closed when there is no more input to docker run. Signed-off-by: John Starks --- docker/listeners/listeners_windows.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docker/listeners/listeners_windows.go b/docker/listeners/listeners_windows.go index 282b285256..ae862fcf91 100644 --- a/docker/listeners/listeners_windows.go +++ b/docker/listeners/listeners_windows.go @@ -32,7 +32,13 @@ func Init(proto, addr, socketGroup string, tlsConfig *tls.Config) (ls []net.List sddl += fmt.Sprintf("(A;;GRGW;;;%s)", sid) } } - l, err := winio.ListenPipe(addr, sddl) + 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, + } + l, err := winio.ListenPipe(addr, &c) if err != nil { return nil, err }