rules-reload: fix reload with -s or -S

When using the -S or -s option, the reload was causing the specified
rules file to be forgotten and the default rules to be loaded at
reload time.
pull/1743/head
Eric Leblond 10 years ago committed by Victor Julien
parent b85901a6b4
commit a4089873c7

@ -2340,7 +2340,7 @@ static int reloads = 0;
* \retval -1 error
* \retval 0 ok
*/
int DetectEngineReload(const char *filename)
int DetectEngineReload(const char *filename, SCInstance *suri)
{
DetectEngineCtx *new_de_ctx = NULL;
DetectEngineCtx *old_de_ctx = NULL;
@ -2377,7 +2377,8 @@ int DetectEngineReload(const char *filename)
DetectEngineDeReference(&old_de_ctx);
return -1;
}
if (SigLoadSignatures(new_de_ctx, NULL, 0) != 0) {
if (SigLoadSignatures(new_de_ctx,
suri->sig_file, suri->sig_file_exclusive) != 0) {
DetectEngineCtxFree(new_de_ctx);
DetectEngineDeReference(&old_de_ctx);
return -1;

@ -75,7 +75,7 @@ void DetectEnginePruneFreeList(void);
int DetectEngineMoveToFreeList(DetectEngineCtx *de_ctx);
DetectEngineCtx *DetectEngineReference(DetectEngineCtx *);
void DetectEngineDeReference(DetectEngineCtx **de_ctx);
int DetectEngineReload(const char *filename);
int DetectEngineReload(const char *filename, SCInstance *suri);
int DetectEngineEnabled(void);
int DetectEngineMTApply(void);
int DetectEngineMultiTenantEnabled(void);

@ -2386,7 +2386,7 @@ int main(int argc, char **argv)
if (suri.delayed_detect) {
/* force 'reload', this will load the rules and swap engines */
DetectEngineReload(NULL);
DetectEngineReload(NULL, &suri);
if (suri.sig_file != NULL)
UtilSignalHandlerSetup(SIGUSR2, SignalHandlerSigusr2SigFileStartup);
@ -2419,10 +2419,10 @@ int main(int argc, char **argv)
}
if (sigusr2_count > 0) {
DetectEngineReload(conf_filename);
DetectEngineReload(conf_filename, &suri);
sigusr2_count--;
} else if (DetectEngineReloadIsStart()) {
DetectEngineReload(conf_filename);
DetectEngineReload(conf_filename, &suri);
DetectEngineReloadSetDone();
}

Loading…
Cancel
Save