From 1b7adf2899b1555cd10c3f48fff3f566270b1631 Mon Sep 17 00:00:00 2001 From: Steve Streeting Date: Fri, 27 May 2016 15:05:02 +0100 Subject: [PATCH] Correctly deal with nil callback / completion channels --- transfer/basic.go | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/transfer/basic.go b/transfer/basic.go index c3d592fd..024d6314 100644 --- a/transfer/basic.go +++ b/transfer/basic.go @@ -110,8 +110,10 @@ func (a *basicAdapter) worker(workerNum int) { err = a.upload(t, signalAuthOnResponse) } - res := TransferResult{t, err} - a.outChan <- res + if a.outChan != nil { + res := TransferResult{t, err} + a.outChan <- res + } // Only need to signal for auth once signalAuthOnResponse = false @@ -179,7 +181,10 @@ func (a *basicAdapter) download(t *Transfer, signalAuthOnResponse bool) error { tempfilename := f.Name() // Wrap callback to give name context ccb := func(totalSize int64, readSoFar int64, readSinceLast int) error { - return a.cb(t.Name, totalSize, readSoFar, readSinceLast) + if a.cb != nil { + return a.cb(t.Name, totalSize, readSoFar, readSinceLast) + } + return nil } written, err := tools.CopyWithCallback(f, hasher, res.ContentLength, ccb) if err != nil { @@ -228,7 +233,10 @@ func (a *basicAdapter) upload(t *Transfer, signalAuthOnResponse bool) error { // Ensure progress callbacks made while uploading // Wrap callback to give name context ccb := func(totalSize int64, readSoFar int64, readSinceLast int) error { - return a.cb(t.Name, totalSize, readSoFar, readSinceLast) + if a.cb != nil { + return a.cb(t.Name, totalSize, readSoFar, readSinceLast) + } + return nil } var reader io.Reader reader = &progress.CallbackReader{