Merge branch 'topic/robin/exit-after-terminate'

* topic/robin/exit-after-terminate:
  Updating submodule(s).
  Fixing exit-after-terminate when used with bare mode.
  New option exit_only_after_terminate to prevent Bro from exiting.
This commit is contained in:
Robin Sommer 2013-02-04 09:44:33 -08:00
commit 52f52f60a5
4 changed files with 17 additions and 4 deletions

View file

@ -240,7 +240,7 @@ export {
## The 4-tuple of the encapsulating "connection". In case of an IP-in-IP
## tunnel the ports will be set to 0. The direction (i.e., orig and
## resp) are set according to the first tunneled packet seen
## and not according to the side that established the tunnel.
## and not according to the side that established the tunnel.
cid: conn_id;
## The type of tunnel.
tunnel_type: Tunnel::Type;
@ -2507,7 +2507,7 @@ type ModbusHeaders: record {
module SOCKS;
export {
## This record is for a SOCKS client or server to provide either a
## This record is for a SOCKS client or server to provide either a
## name or an address to represent a desired or established connection.
type Address: record {
host: addr &optional;
@ -2608,6 +2608,15 @@ const gap_report_freq = 1.0 sec &redef;
## .. bro:see:: content_gap gap_report partial_connection
const report_gaps_for_partial = F &redef;
## Flag to prevent Bro from exiting automatically when input is exhausted.
## Normally Bro terminates when all packets sources have gone dry
## and communication isn't enabled. If this flag is set, Bro's main loop will
## instead keep idleing until :bro:see::`terminate` is explicitly called.
##
## This is mainly for testing purposes when termination behaviour needs to be
## controlled for reproducing results.
const exit_only_after_terminate = F &redef;
## The CA certificate file to authorize remote Bros/Broccolis.
##
## .. bro:see:: ssl_private_key ssl_passphrase

View file

@ -421,7 +421,8 @@ void net_run()
set_processing_status("RUNNING", "net_run");
while ( io_sources.Size() ||
(packet_sorter && ! packet_sorter->Empty()) )
(packet_sorter && ! packet_sorter->Empty()) ||
(BifConst::exit_only_after_terminate && ! terminating) )
{
double ts;
IOSource* src = io_sources.FindSoonest(&ts);

View file

@ -6,6 +6,7 @@ const ignore_keep_alive_rexmit: bool;
const skip_http_data: bool;
const use_conn_size_analyzer: bool;
const report_gaps_for_partial: bool;
const exit_only_after_terminate: bool;
const NFS3::return_data: bool;
const NFS3::return_data_max: count;

View file

@ -1055,7 +1055,9 @@ int main(int argc, char** argv)
io_sources.Register(thread_mgr, true);
if ( io_sources.Size() > 0 || have_pending_timers )
if ( io_sources.Size() > 0 ||
have_pending_timers ||
BifConst::exit_only_after_terminate )
{
if ( profiling_logger )
profiling_logger->Log();