1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-12-17 03:25:46 +00:00
freebsd-ports/net-mgmt/tcptrack/files/patch-no-stack-limits
Mikhail Teterin fbb19c4f2d Unbreak:
. Fix the ancient bug, which prevented this from being
  compiled with delightfully picky clang++ -- thus removing
  the GCC-requirement added by pi@
. Remove the author's curious attempts to impose stack-size
  limits on the various threads of this program -- this was,
  what caused the program to crash at run-time
. Get rid of pkg-plist (which only had two files) anyway.
. Declare the LICENSE (LGPL21)

Bump PORTREVISION.

Approved by:	port being condemned for deletion
2015-03-23 20:47:55 +00:00

161 lines
5.3 KiB
Plaintext

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.");