diff --git a/src/detect-engine.c b/src/detect-engine.c index 93aab65780..f9785c7c98 100644 --- a/src/detect-engine.c +++ b/src/detect-engine.c @@ -1308,7 +1308,7 @@ static TmEcode DetectEngineThreadCtxInitForLiveRuleSwap(ThreadVars *tv, void *in memset(det_ctx, 0, sizeof(DetectEngineThreadCtx)); det_ctx->tv = tv; - det_ctx->de_ctx = DetectEngineGetCurrent(); + det_ctx->de_ctx = DetectEngineReference(initdata); if (det_ctx->de_ctx == NULL) { return TM_ECODE_FAILED; } @@ -1527,6 +1527,14 @@ DetectEngineCtx *DetectEngineGetCurrent(void) return master->list; } +DetectEngineCtx *DetectEngineReference(DetectEngineCtx *de_ctx) +{ + if (de_ctx == NULL) + return NULL; + de_ctx->ref_cnt++; + return de_ctx; +} + void DetectEngineDeReference(DetectEngineCtx **de_ctx) { BUG_ON((*de_ctx)->ref_cnt == 0); diff --git a/src/detect-engine.h b/src/detect-engine.h index af58075134..b95f509ebb 100644 --- a/src/detect-engine.h +++ b/src/detect-engine.h @@ -72,6 +72,7 @@ int DetectEngineAddToMaster(DetectEngineCtx *de_ctx); DetectEngineCtx *DetectEngineGetCurrent(void); void DetectEnginePruneFreeList(void); int DetectEngineMoveToFreeList(DetectEngineCtx *de_ctx); +DetectEngineCtx *DetectEngineReference(DetectEngineCtx *); void DetectEngineDeReference(DetectEngineCtx **de_ctx); int DetectEngineReload(void); int DetectEngineEnabled(void);