From 24eade89d0590fadec8e64124caff5295c2a0bfc Mon Sep 17 00:00:00 2001 From: M09Ic Date: Mon, 23 Sep 2024 16:19:41 +0800 Subject: [PATCH] clean fallback print and fix multi print --- internal/pool/brutepool.go | 12 ++++++++---- internal/pool/pool.go | 2 ++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/internal/pool/brutepool.go b/internal/pool/brutepool.go index a8f72c5..3123169 100644 --- a/internal/pool/brutepool.go +++ b/internal/pool/brutepool.go @@ -701,10 +701,10 @@ func (pool *BrutePool) addFuzzyBaseline(bl *pkg.Baseline) { } } -func (pool *BrutePool) recover() { +func (pool *BrutePool) fallback() { logs.Log.Errorf("%s ,failed request exceeds the threshold , task will exit. Breakpoint %d", pool.BaseURL, pool.wordOffset) for i, bl := range pool.FailedBaselines { - if i > int(pool.BreakThreshold) { + if i > 5 { break } logs.Log.Errorf("[failed.%d] %s", i, bl.String()) @@ -717,7 +717,7 @@ func (pool *BrutePool) Close() { time.Sleep(time.Duration(100) * time.Millisecond) } close(pool.additionCh) // 关闭addition管道 - close(pool.checkCh) // 关闭check管道 + //close(pool.checkCh) // 关闭check管道 pool.Statistor.EndTime = time.Now().Unix() pool.reqPool.Release() pool.scopePool.Release() @@ -740,7 +740,11 @@ func (pool *BrutePool) resetFailed() { func (pool *BrutePool) doCheck() { if pool.failedCount > pool.BreakThreshold { // 当报错次数超过上限是, 结束任务 - pool.recover() + if pool.isFallback.Load() { + return + } + pool.isFallback.Store(true) + pool.fallback() pool.Cancel() pool.IsFailed = true return diff --git a/internal/pool/pool.go b/internal/pool/pool.go index 7709a58..85357ed 100644 --- a/internal/pool/pool.go +++ b/internal/pool/pool.go @@ -7,6 +7,7 @@ import ( "github.com/chainreactors/spray/pkg" "github.com/chainreactors/words" "sync" + "sync/atomic" ) type BasePool struct { @@ -24,6 +25,7 @@ type BasePool struct { additionCh chan *Unit closeCh chan struct{} wg *sync.WaitGroup + isFallback atomic.Bool } func (pool *BasePool) doRedirect(bl *pkg.Baseline, depth int) {