You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/net-misc/l7-filter-userspace/files/l7-filter-userspace-0.11-ma...

56 lines
1.6 KiB

--- l7-filter-userspace-0.11/l7-conntrack.cpp.orig 2009-02-26 21:40:28.000000000 +0000
+++ l7-filter-userspace-0.11/l7-conntrack.cpp 2010-07-23 13:03:23.000000000 +0100
@@ -195,11 +195,13 @@
{
nfct_conntrack_free(ct);
nfct_close(cth);
+ pthread_mutex_destroy(&map_mutex);
}
l7_conntrack::l7_conntrack(void* l7_classifier_in)
{
l7_classifier = (l7_classify *)l7_classifier_in;
+ pthread_mutex_init(&map_mutex, NULL);
// Now open a handler that is subscribed to all possible events
cth = nfct_open(CONNTRACK, NFCT_ALL_CT_GROUPS);
@@ -211,19 +213,27 @@
l7_connection *l7_conntrack::get_l7_connection(const string key)
{
- return l7_connections[key];
+ l7_connection *conn;
+ pthread_mutex_lock(&map_mutex);
+ conn = l7_connections[key];
+ pthread_mutex_unlock(&map_mutex);
+ return conn;
}
void l7_conntrack::add_l7_connection(l7_connection* connection,
const string key)
{
+ pthread_mutex_lock(&map_mutex);
l7_connections[key] = connection;
+ pthread_mutex_unlock(&map_mutex);
}
void l7_conntrack::remove_l7_connection(const string key)
{
+ pthread_mutex_lock(&map_mutex);
delete l7_connections[key];
l7_connections.erase(l7_connections.find(key));
+ pthread_mutex_unlock(&map_mutex);
}
void l7_conntrack::start()
--- l7-filter-userspace-0.11/l7-conntrack.h.orig 2010-07-23 13:04:49.000000000 +0100
+++ l7-filter-userspace-0.11/l7-conntrack.h 2010-07-23 13:05:56.000000000 +0100
@@ -52,6 +52,7 @@
l7_map l7_connections;
struct nfct_conntrack *ct;
struct nfct_handle *cth; // the callback
+ pthread_mutex_t map_mutex;
public:
l7_conntrack(void * foo);