Kaynağa Gözat

Don't exit on eof in header reading in stdcopy

There was random lines drops in docker logs because of this
Docker-DCO-1.1-Signed-off-by: Alexandr Morozov <lk4d4math@gmail.com> (github: LK4D4)
Alexandr Morozov 11 yıl önce
ebeveyn
işleme
b1bae92534
1 değiştirilmiş dosya ile 5 ekleme ve 4 silme
  1. 5 4
      utils/stdcopy.go

+ 5 - 4
utils/stdcopy.go

@@ -82,13 +82,14 @@ func StdCopy(dstout, dsterr io.Writer, src io.Reader) (written int64, err error)
 		for nr < StdWriterPrefixLen {
 		for nr < StdWriterPrefixLen {
 			var nr2 int
 			var nr2 int
 			nr2, er = src.Read(buf[nr:])
 			nr2, er = src.Read(buf[nr:])
-			if er == io.EOF {
-				return written, nil
-			}
-			if er != nil {
+			// Don't exit on EOF, because we can have some more input
+			if er != nil && er != io.EOF {
 				return 0, er
 				return 0, er
 			}
 			}
 			nr += nr2
 			nr += nr2
+			if nr == 0 {
+				return written, nil
+			}
 		}
 		}
 
 
 		// Check the first byte to know where to write
 		// Check the first byte to know where to write