Remove attempts to set arbitrary limits on stack-sizes for different
threads, which cause segfaults (due, presumably, to the limits being
too low).

	-mi

--- src/defs.h	2010-09-27 19:02:01.000000000 -0400
+++ src/defs.h	2015-03-23 16:39:53.000000000 -0400
@@ -30,8 +30,2 @@
 //#define FASTMODE_INTERVAL 250000000 // one quarter of a second
 #define FASTMODE_INTERVAL 100000000 // one tenth of a second
-
-// stack sizes for the different threads
-#define SS_PB  2048 // PacketBuffer
-#define SS_S   4096 // Sniffer 2048 -> segfault on freebsd
-#define SS_TCC 4096 // TCContainer
-#define SS_TUI 5120 // TextUI. 4096 -> segfault on solaris
--- src/PacketBuffer.cc	2010-09-27 19:02:01.000000000 -0400
+++ src/PacketBuffer.cc	2015-03-23 16:23:36.000000000 -0400
@@ -53,14 +53,6 @@
 	// Start up maintenence thread
 	//
-	pthread_attr_t attr;
-	if( pthread_attr_init( &attr ) != 0 )
-		throw GenericError("pthread_attr_init() failed");
-
-	// TODO: there is no man page for this call on linux. Not sure what it
-	// may return. On some systems it may not be supported at all 
-	// (should return ENOSYS). Should be safe to ignore return val.
-	pthread_attr_setstacksize( &attr, SS_PB );
 
-	if( pthread_create(&maint_thread_tid,&attr,pbmaint_thread_func,this) != 0 )
+	if (pthread_create(&maint_thread_tid, NULL, pbmaint_thread_func, this) != 0)
 		throw GenericError("pthread_create() returned an error");
 
--- src/Sniffer.cc	2010-09-27 19:02:22.000000000 -0400
+++ src/Sniffer.cc	2015-03-23 16:25:10.000000000 -0400
@@ -55,5 +66,5 @@
 }
 
-void Sniffer::init(char *iface, char *fexp, char *test_file)
+void Sniffer::init(const char *iface, const char *fexp, const char *test_file)
 {
 	assert(pcap_initted==false);
@@ -89,6 +102,4 @@
 	// prepare the filter	
 	//
-	struct bpf_program filter; // the filter for the sniffer
-	char *filter_app = fexp;  // The filter expression
 	bpf_u_int32 mask;  // The netmask of our sniffing device
 	bpf_u_int32 net;    // The IP of our sniffing device
@@ -102,28 +113,23 @@
 		mask = 0;
 	}
-	if( pcap_compile(handle, &filter, filter_app, 0, net) == -1 )
-	{
-		pcap_close(handle);
-		throw PcapError("pcap_compile",pcap_geterr(handle));
-	}
-	if( pcap_setfilter(handle, &filter) ) // apply filter to sniffer
-	{
-		pcap_freecode(&filter);
-		pcap_close(handle);
-		throw PcapError("pcap_setfilter",pcap_geterr(handle));
+	if (fexp != NULL && fexp[0] != '\0') {
+		struct bpf_program filter; // the filter for the sniffer
+		if (pcap_compile(handle, &filter, fexp, 0, net) == -1)
+		{
+			pcap_close(handle);
+			throw PcapError("pcap_compile", pcap_geterr(handle));
+		}
+		if (pcap_setfilter(handle, &filter)) // apply filter to sniffer
+		{
+			pcap_freecode(&filter);
+			pcap_close(handle);
+			throw PcapError("pcap_setfilter", pcap_geterr(handle));
+		}
+		pcap_freecode(&filter); // filter code not needed after setfilter
 	}
-	pcap_freecode(&filter); // filter code not needed after setfilter
-	
-	pcap_initted=true;
-
 
-	pthread_attr_t attr;
-
-	if( pthread_attr_init( &attr ) != 0 )
-		throw GenericError("pthread_attr_init() failed");
-
-	pthread_attr_setstacksize( &attr, SS_S );
+	pcap_initted=true;
 
-	if( pthread_create(&sniffer_tid,&attr,sniffer_thread_func,this) != 0 )
+	if (pthread_create(&sniffer_tid, NULL, sniffer_thread_func, this) != 0)
 		throw GenericError("pthread_create() failed.");
 
@@ -163,9 +170,11 @@
 void Sniffer::processPacket( const pcap_pkthdr *header, const u_char *packet )
 {
-	assert( pthread_mutex_lock(&pb_mutex)==0 );
+
+	if (pthread_mutex_lock(&pb_mutex) != 0)
+		return;
 
 	if( pb==NULL ) 
 	{
-		assert( pthread_mutex_unlock(&pb_mutex) == 0 );
+		pthread_mutex_unlock(&pb_mutex);
 		return;
 	}
@@ -193,5 +202,5 @@
 	pb->pushPacket(n);
 	
-	assert( pthread_mutex_unlock(&pb_mutex) == 0 );
+	pthread_mutex_unlock(&pb_mutex);
 }
 
--- src/Sniffer.h	2010-09-27 19:02:22.000000000 -0400
+++ src/Sniffer.h	2015-03-23 15:07:57.000000000 -0400
@@ -43,5 +43,5 @@
 	// init performs some constructor-like activity. It is separate
 	// so that exceptions don't have to be thrown in the constructor.
-	void init(char *iface, char *fexp, char *test_file);
+	void init(const char *iface, const char *fexp, const char *test_file);
 
 	// set the place where sniffed packets are sent for further 
--- src/TCContainer.cc	2010-09-27 19:02:01.000000000 -0400
+++ src/TCContainer.cc	2015-03-23 16:23:05.000000000 -0400
@@ -47,15 +47,8 @@
 	state=TSTATE_IDLE;
 
-	pthread_attr_t attr;
-
 	pthread_mutex_init( &conlist_lock, NULL );
 	pthread_mutex_init( &state_mutex, NULL );
 
-	if( pthread_attr_init( &attr ) != 0 )
-		throw GenericError("pthread_attr_init() failed");
-
-	pthread_attr_setstacksize( &attr, SS_TCC );
-
-	if( pthread_create(&maint_thread_tid,&attr,maint_thread_func,this) != 0 )
+	if( pthread_create(&maint_thread_tid, NULL, maint_thread_func, this) != 0 )
 		throw GenericError("pthread_create() failed.");
 
--- src/TextUI.cc	2011-08-03 13:34:45.000000000 -0400
+++ src/TextUI.cc	2015-03-23 16:24:20.000000000 -0400
@@ -80,11 +80,5 @@
 	run_displayer = true;
 
-	pthread_attr_t attr;
-	if( pthread_attr_init( &attr ) != 0 )
-		throw GenericError("pthread_attr_init() failed");
-
-	pthread_attr_setstacksize( &attr, SS_TUI );
-
-	if( pthread_create(&displayer_tid,&attr,displayer_thread_func,this) != 0 )
+	if (pthread_create(&displayer_tid, NULL, displayer_thread_func, this) != 0)
 		throw GenericError("pthread_create() returned an error.");