1
0
mirror of https://github.com/docker/cli.git synced 2026-01-15 07:40:57 +03:00

Merge pull request #9573 from crosbymichael/flush-stdin

Flush stdin from within chroot archive
Upstream-commit: f568b282feb16d6343fc4763170b882885ccd19d
Component: engine
This commit is contained in:
unclejack
2014-12-09 01:54:01 +02:00
4 changed files with 26 additions and 4 deletions

View File

@@ -6,7 +6,6 @@ import (
"flag"
"fmt"
"io"
"io/ioutil"
"os"
"runtime"
"strings"
@@ -35,9 +34,7 @@ func untar() {
fatal(err)
}
// fully consume stdin in case it is zero padded
if _, err := ioutil.ReadAll(os.Stdin); err != nil {
fatal(err)
}
flush(os.Stdin)
os.Exit(0)
}

View File

@@ -83,3 +83,19 @@ func TestChrootUntarEmptyArchiveFromSlowReader(t *testing.T) {
t.Fatal(err)
}
}
func TestChrootApplyEmptyArchiveFromSlowReader(t *testing.T) {
tmpdir, err := ioutil.TempDir("", "docker-TestChrootApplyEmptyArchiveFromSlowReader")
if err != nil {
t.Fatal(err)
}
defer os.RemoveAll(tmpdir)
dest := filepath.Join(tmpdir, "dest")
if err := os.MkdirAll(dest, 0700); err != nil {
t.Fatal(err)
}
stream := &slowEmptyTarReader{size: 10240, chunkSize: 1024}
if err := ApplyLayer(dest, stream); err != nil {
t.Fatal(err)
}
}

View File

@@ -32,6 +32,7 @@ func applyLayer() {
fatal(err)
}
os.RemoveAll(tmpDir)
flush(os.Stdin)
os.Exit(0)
}

View File

@@ -2,6 +2,8 @@ package chrootarchive
import (
"fmt"
"io"
"io/ioutil"
"os"
"github.com/docker/docker/pkg/reexec"
@@ -16,3 +18,9 @@ func fatal(err error) {
fmt.Fprint(os.Stderr, err)
os.Exit(1)
}
// flush consumes all the bytes from the reader discarding
// any errors
func flush(r io.Reader) {
io.Copy(ioutil.Discard, r)
}