aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/fuzzer/queue/retry.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/fuzzer/queue/retry.go')
-rw-r--r--pkg/fuzzer/queue/retry.go28
1 files changed, 19 insertions, 9 deletions
diff --git a/pkg/fuzzer/queue/retry.go b/pkg/fuzzer/queue/retry.go
index c59a2c048..186850b5b 100644
--- a/pkg/fuzzer/queue/retry.go
+++ b/pkg/fuzzer/queue/retry.go
@@ -3,6 +3,10 @@
package queue
+import (
+ "fmt"
+)
+
type retryer struct {
pq *PlainQueue
base Source
@@ -28,16 +32,22 @@ func (r *retryer) Next() *Request {
}
func (r *retryer) done(req *Request, res *Result) bool {
- // The input was on a restarted VM.
- if res.Status == Restarted {
- r.pq.Submit(req)
- return false
- }
- // Retry important requests from crashed VMs once.
- if res.Status == Crashed && req.Important && !req.onceCrashed {
- req.onceCrashed = true
+ switch res.Status {
+ case Success, ExecFailure, Hanged:
+ return true
+ case Restarted:
+ // The input was on a restarted VM.
r.pq.Submit(req)
return false
+ case Crashed:
+ // Retry important requests from crashed VMs once.
+ if req.Important && !req.onceCrashed {
+ req.onceCrashed = true
+ r.pq.Submit(req)
+ return false
+ }
+ return true
+ default:
+ panic(fmt.Sprintf("unhandled status %v", res.Status))
}
- return true
}