Flush file buffers on CloseWrite

This forces any pending data to be sent to the remote party before
emitting the 0-length EOF message, to make sure it appears as a seperate
message.

This fixes the "TestEchoWithMessaging" test

Signed-off-by: Simon Ferquel <simon.ferquel@docker.com>
This commit is contained in:
Simon Ferquel
2017-03-17 16:57:20 +01:00
parent 203d18a858
commit 7c7d6b461c
2 changed files with 9 additions and 1 deletions
+4
View File
@@ -219,3 +219,7 @@ func (f *win32File) SetWriteDeadline(t time.Time) error {
f.writeDeadline = t
return nil
}
func (f *win32File) Flush() error {
return syscall.FlushFileBuffers(f.handle)
}
+5 -1
View File
@@ -87,7 +87,11 @@ func (f *win32MessageBytePipe) CloseWrite() error {
if f.writeClosed {
return errPipeWriteClosed
}
_, err := f.win32File.Write(nil)
err := f.win32File.Flush()
if err != nil {
return err
}
_, err = f.win32File.Write(nil)
if err != nil {
return err
}