Release to master

This commit is contained in:
Daniel 2020-05-29 15:07:36 +02:00
commit 74e6085ea6
3 changed files with 30 additions and 11 deletions

View file

@ -85,7 +85,13 @@ func FullVersion() string {
// CheckVersion checks if the metadata is ok.
func CheckVersion() error {
if !strings.HasSuffix(os.Args[0], ".test") {
switch {
case strings.HasSuffix(os.Args[0], ".test"):
return nil // testing on linux/darwin
case strings.HasSuffix(os.Args[0], ".test.exe"):
return nil // testing on windows
default:
// check version information
if name == "[NAME]" {
return errors.New("must call SetInfo() before calling CheckVersion()")
}
@ -100,5 +106,6 @@ func CheckVersion() error {
return errors.New("please build using the supplied build script.\n$ ./build {main.go|...}")
}
}
return nil
}

View file

@ -19,6 +19,9 @@ var (
// lock modules when starting
modulesLocked = abool.New()
moduleStartTimeout = 2 * time.Minute
moduleStopTimeout = 1 * time.Minute
// ErrCleanExit is returned by Start() when the program is interrupted before starting. This can happen for example, when using the "--help" flag.
ErrCleanExit = errors.New("clean exit requested")
)
@ -117,7 +120,7 @@ func (m *Module) prep(reports chan *report) {
// execute function
err = m.runCtrlFnWithTimeout(
"prep module",
10*time.Second,
moduleStartTimeout,
m.prepFn,
)
}
@ -173,7 +176,7 @@ func (m *Module) start(reports chan *report) {
// execute function
err = m.runCtrlFnWithTimeout(
"start module",
10*time.Second,
moduleStartTimeout,
m.startFn,
)
}
@ -248,7 +251,7 @@ func (m *Module) stopAllTasks(reports chan *report) {
// wait for results
select {
case <-done:
case <-time.After(30 * time.Second):
case <-time.After(moduleStopTimeout):
log.Warningf(
"%s: timed out while waiting for stopfn/workers/tasks to finish: stopFn=%v workers=%d tasks=%d microtasks=%d, continuing shutdown...",
m.Name,

View file

@ -1,6 +1,7 @@
package rng
import (
"context"
"crypto/aes"
"crypto/cipher"
"crypto/rand"
@ -49,14 +50,22 @@ func start() error {
return errors.New("failed to initialize rng")
}
// explicitly add randomness
// add another (async) OS rng seed
module.StartWorker("initial rng feed", func(_ context.Context) error {
// get entropy from OS
osEntropy := make([]byte, minFeedEntropy/8)
_, err := rand.Read(osEntropy)
if err != nil {
return fmt.Errorf("could not read entropy from os: %s", err)
}
// feed
rngLock.Lock()
rng.Reseed(osEntropy)
rngLock.Unlock()
return nil
})
// mark as ready
rngReady = true
// random source: OS