--- 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;
 	}

