--- a/bro-2.4/src/Flare.h +++ b/bro-2.4/src/Flare.h @@ -37,6 +37,7 @@ private: Pipe pipe; + bool is_on_fire; }; } // namespace bro --- a/bro-2.4/src/Flare.cc +++ b/bro-2.4/src/Flare.cc @@ -9,7 +9,7 @@ using namespace bro; Flare::Flare() - : pipe(FD_CLOEXEC, FD_CLOEXEC, O_NONBLOCK, O_NONBLOCK) + : pipe(FD_CLOEXEC, FD_CLOEXEC, O_NONBLOCK, O_NONBLOCK), is_on_fire(false) { } @@ -23,6 +23,9 @@ void Flare::Fire() { char tmp = 0; + + if (is_on_fire) + return; for ( ; ; ) { @@ -47,11 +50,15 @@ // No error, but didn't write a byte: try again. } + is_on_fire = true; } void Flare::Extinguish() { char tmp[256]; + + if (!is_on_fire) + return; for ( ; ; ) { @@ -71,4 +78,5 @@ bad_pipe_op("read"); } + is_on_fire = false; }