GH-1321: Prevent compounding of connection_status_update event timers

Particularly for ICMP connections, a new timer got added every time a
`connection` record was updated even if there was still a pending timer
for that connection.
This commit is contained in:
Jon Siwek 2020-12-08 11:20:02 -08:00
parent 07c4662dc4
commit a35cd2a726
4 changed files with 20 additions and 0 deletions

View file

@ -322,6 +322,9 @@ void Connection::SetInactivityTimeout(double timeout)
void Connection::EnableStatusUpdateTimer()
{
if ( installed_status_timer )
return;
if ( connection_status_update && zeek::detail::connection_status_update_interval )
{
ADD_TIMER(&Connection::StatusUpdateTimer,

View file

@ -0,0 +1,6 @@
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
new_connection, [orig_h=172.16.133.2, orig_p=8/icmp, resp_h=172.217.11.78, resp_p=0/icmp]
connection_status_update, 1, [orig_h=172.16.133.2, orig_p=8/icmp, resp_h=172.217.11.78, resp_p=0/icmp]
connection_status_update, 2, [orig_h=172.16.133.2, orig_p=8/icmp, resp_h=172.217.11.78, resp_p=0/icmp]
connection_status_update, 3, [orig_h=172.16.133.2, orig_p=8/icmp, resp_h=172.217.11.78, resp_p=0/icmp]
connection_status_update, 4, [orig_h=172.16.133.2, orig_p=8/icmp, resp_h=172.217.11.78, resp_p=0/icmp]

Binary file not shown.

View file

@ -0,0 +1,11 @@
# @TEST-EXEC: zeek -b -C -r $TRACES/icmp/5-pings.pcap %INPUT >out
# @TEST-EXEC: btest-diff out
global update_count = 0;
global connection_status_update_interval = 1sec;
event new_connection(c: connection)
{ print "new_connection", c$id; }
event connection_status_update(c: connection)
{ print "connection_status_update", ++update_count, c$id; }