Skip to content

Commit 2aec524

Browse files
committed
Automatically decompress archives for transfer service import
Signed-off-by: Edgar Lee <[email protected]>
1 parent be5ec97 commit 2aec524

1 file changed

Lines changed: 13 additions & 1 deletion

File tree

pkg/transfer/archive/importer.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
ocispec "github.com/opencontainers/image-spec/specs-go/v1"
2525

2626
transferapi "github.com/containerd/containerd/api/types/transfer"
27+
"github.com/containerd/containerd/archive/compression"
2728
"github.com/containerd/containerd/content"
2829
"github.com/containerd/containerd/images/archive"
2930
"github.com/containerd/containerd/log"
@@ -64,7 +65,18 @@ func (iis *ImageImportStream) Import(ctx context.Context, store content.Store) (
6465
if iis.forceCompress {
6566
opts = append(opts, archive.WithImportCompression())
6667
}
67-
return archive.ImportIndex(ctx, store, iis.stream, opts...)
68+
69+
r := iis.stream
70+
if iis.mediaType == "" {
71+
d, err := compression.DecompressStream(iis.stream)
72+
if err != nil {
73+
return ocispec.Descriptor{}, err
74+
}
75+
defer d.Close()
76+
r = d
77+
}
78+
79+
return archive.ImportIndex(ctx, store, r, opts...)
6880
}
6981

7082
func (iis *ImageImportStream) MarshalAny(ctx context.Context, sm streaming.StreamCreator) (typeurl.Any, error) {

0 commit comments

Comments
 (0)