#include "utils/util.h"
#include "main/analyzer.h"
+#include "main/thread.h"
#include "snort.h"
#include "utils/ring.h"
static Ring<PigSignal> sig_ring(4);
static volatile sig_atomic_t child_ready_signal = 0;
+static THREAD_LOCAL volatile bool is_main_thread = false;
typedef void (*sighandler_t)(int);
static int add_signal(int sig, sighandler_t, int check_needed);
void set_quick_exit(bool b)
{ exit_pronto = b; }
+void init_main_thread_sig()
+{ is_main_thread = true; }
+
static void exit_handler(int signal)
{
PigSignal s;
static void oops_handler(int signal)
{
- CapturePacket();
+ // FIXIT-L what should we capture if this is the main thread?
+ if (!is_main_thread)
+ CapturePacket();
+
add_signal(signal, SIG_DFL, 0);
raise(signal);
}
void daemonize();
void set_quick_exit(bool);
+void init_main_thread_sig();
#endif
static void main_loop()
{
unsigned idx = max_pigs, swine = 0;
+ init_main_thread_sig();
while ( !exit_logged && (dont_stop() || swine) )
{
s_pkth = *s_packet.pkth;
if ( s_packet.pkt )
+ {
memcpy(s_data, s_packet.pkt, 0xFFFF & s_packet.pkth->caplen);
+ s_packet.pkt = s_data;
+ }
}
}
"If this is an encapsulated layer, you must also set UNSURE_ENCAP"
" and SAVE_LAYER");
-
//-------------------------------------------------------------------------
// Encode/Decode functions
//-------------------------------------------------------------------------
uint8_t mapped_prot = CodecManager::grinder;
uint16_t prev_prot_id = FINISHED_DECODE;
-
-// assert(!(p->packet_flags & PKT_REBUILT_STREAM));
-
-
// initialize all Packet information
memset(p, 0, PKT_ZERO_LEN);
p->pkth = pkthdr;