From d56466cf399d474888699da7ad9bfdb228c34bcf Mon Sep 17 00:00:00 2001 From: Derek McGowan Date: Tue, 2 May 2023 18:17:14 -0700 Subject: [PATCH] [transfer] avoid setting limiters when max is 0 Signed-off-by: Derek McGowan --- pkg/transfer/local/transfer.go | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/pkg/transfer/local/transfer.go b/pkg/transfer/local/transfer.go index 5cf7008c3367..7ca800a62f55 100644 --- a/pkg/transfer/local/transfer.go +++ b/pkg/transfer/local/transfer.go @@ -46,14 +46,19 @@ type localTransferService struct { } func NewTransferService(lm leases.Manager, cs content.Store, is images.Store, tc *TransferConfig) transfer.Transferrer { - return &localTransferService{ - leases: lm, - content: cs, - images: is, - limiterU: semaphore.NewWeighted(int64(tc.MaxConcurrentUploadedLayers)), - limiterD: semaphore.NewWeighted(int64(tc.MaxConcurrentDownloads)), - config: *tc, + ts := &localTransferService{ + leases: lm, + content: cs, + images: is, + config: *tc, } + if tc.MaxConcurrentUploadedLayers > 0 { + ts.limiterU = semaphore.NewWeighted(int64(tc.MaxConcurrentUploadedLayers)) + } + if tc.MaxConcurrentDownloads > 0 { + ts.limiterD = semaphore.NewWeighted(int64(tc.MaxConcurrentDownloads)) + } + return ts } func (ts *localTransferService) Transfer(ctx context.Context, src interface{}, dest interface{}, opts ...transfer.Opt) error {