tarFilterer: always flush after writing
Always call the nested TarWriter's Flush() method after writing file contents. Signed-off-by: Nalin Dahyabhai <nalin@redhat.com>
This commit is contained in:
parent
fce45b77d0
commit
7d5f1e1ca9
18
digester.go
18
digester.go
|
|
@ -61,7 +61,14 @@ type tarFilterer struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *tarFilterer) Write(p []byte) (int, error) {
|
func (t *tarFilterer) Write(p []byte) (int, error) {
|
||||||
return t.pipeWriter.Write(p)
|
n, err := t.pipeWriter.Write(p)
|
||||||
|
if err != nil {
|
||||||
|
t.closedLock.Lock()
|
||||||
|
closed := t.closed
|
||||||
|
t.closedLock.Unlock()
|
||||||
|
err = fmt.Errorf("writing to tar filter pipe (closed=%v,err=%v): %w", closed, t.err, err)
|
||||||
|
}
|
||||||
|
return n, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *tarFilterer) Close() error {
|
func (t *tarFilterer) Close() error {
|
||||||
|
|
@ -108,9 +115,8 @@ func newTarFilterer(writeCloser io.WriteCloser, filter func(hdr *tar.Header) (sk
|
||||||
skip, replaceContents, replacementContents = filter(hdr)
|
skip, replaceContents, replacementContents = filter(hdr)
|
||||||
}
|
}
|
||||||
if !skip {
|
if !skip {
|
||||||
err = tarWriter.WriteHeader(hdr)
|
if err = tarWriter.WriteHeader(hdr); err != nil {
|
||||||
if err != nil {
|
err = fmt.Errorf("writing tar header for %q: %w", hdr.Name, err)
|
||||||
err = fmt.Errorf("filtering tar header for %q: %w", hdr.Name, err)
|
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
if hdr.Size != 0 {
|
if hdr.Size != 0 {
|
||||||
|
|
@ -130,6 +136,10 @@ func newTarFilterer(writeCloser io.WriteCloser, filter func(hdr *tar.Header) (sk
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if err = tarWriter.Flush(); err != nil {
|
||||||
|
err = fmt.Errorf("flushing tar item padding for %q: %w", hdr.Name, err)
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
hdr, err = tarReader.Next()
|
hdr, err = tarReader.Next()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue