Skip to content

Commit

Permalink
Fix issues with progress == nil causing panics
Browse files Browse the repository at this point in the history
Part of PR #459

This prepares for more methods to be exposed via the API.
  • Loading branch information
smira authored and sliverc committed Sep 3, 2019
1 parent 98e75f6 commit 769e984
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 8 deletions.
20 changes: 14 additions & 6 deletions deb/remote.go
Original file line number Diff line number Diff line change
Expand Up @@ -505,8 +505,10 @@ func (repo *RemoteRepo) DownloadPackageIndexes(progress aptly.Progress, d aptly.
}
defer packagesFile.Close()

stat, _ := packagesFile.Stat()
progress.InitBar(stat.Size(), true)
if progress != nil {
stat, _ := packagesFile.Stat()
progress.InitBar(stat.Size(), true)
}

sreader := NewControlFileReader(packagesReader, false, isInstaller)

Expand All @@ -519,8 +521,10 @@ func (repo *RemoteRepo) DownloadPackageIndexes(progress aptly.Progress, d aptly.
break
}

off, _ := packagesFile.Seek(0, 1)
progress.SetBar(int(off))
if progress != nil {
off, _ := packagesFile.Seek(0, 1)
progress.SetBar(int(off))
}

var p *Package

Expand All @@ -541,13 +545,17 @@ func (repo *RemoteRepo) DownloadPackageIndexes(progress aptly.Progress, d aptly.
}
err = repo.packageList.Add(p)
if _, ok := err.(*PackageConflictError); ok {
progress.ColoredPrintf("@y[!]@| @!skipping package %s: duplicate in packages index@|", p)
if progress != nil {
progress.ColoredPrintf("@y[!]@| @!skipping package %s: duplicate in packages index@|", p)
}
} else if err != nil {
return err
}
}

progress.ShutdownBar()
if progress != nil {
progress.ShutdownBar()
}
}

return nil
Expand Down
10 changes: 8 additions & 2 deletions http/download.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"context"
"fmt"
"io"
"io/ioutil"
"net"
"net/http"
"net/url"
Expand Down Expand Up @@ -53,11 +54,16 @@ func NewDownloader(downLimit int64, maxTries int, progress aptly.Progress) aptly
},
}

progressWriter := io.Writer(progress)
if progress == nil {
progressWriter = ioutil.Discard
}

downloader.client.CheckRedirect = downloader.checkRedirect
if downLimit > 0 {
downloader.aggWriter = flowrate.NewWriter(progress, downLimit)
downloader.aggWriter = flowrate.NewWriter(progressWriter, downLimit)
} else {
downloader.aggWriter = progress
downloader.aggWriter = progressWriter
}

return downloader
Expand Down

0 comments on commit 769e984

Please sign in to comment.