Preventing the event processing from looping endlessly when an event

reraised itself during execution of its handlers.
This commit is contained in:
Robin Sommer 2016-06-14 18:10:37 -07:00
parent ddabd13097
commit 2335a62a07
6 changed files with 67 additions and 25 deletions

View file

@ -0,0 +1 @@
10

View file

@ -0,0 +1,31 @@
# @TEST-EXEC: bro %INPUT 2>&1 | grep -v termination | sort | uniq | wc -l >output
# @TEST-EXEC: btest-diff output
# In old version, the event would keep triggering endlessely, with the network
# time not moving forward and Bro not terminating.
#
# Note that the output will be 10 (not 20) because we still execute two rounds
# of events every time we drain.
redef exit_only_after_terminate=T;
global c = 0;
event test()
{
c += 1;
if ( c == 20 )
{
terminate();
return;
}
print network_time();
event test();
}
event bro_init()
{
event test();
}