diff options
author | Andreas Steffen <andreas.steffen@strongswan.org> | 2011-05-09 07:55:59 +0200 |
---|---|---|
committer | Andreas Steffen <andreas.steffen@strongswan.org> | 2011-05-09 16:46:08 +0200 |
commit | bb6b2fbb8139b6aa5b7e1cdac76fae10708b20dc (patch) | |
tree | 08d53a08f6331e070eb1ad3f1a0e0798344bcf86 /src/libcharon | |
parent | 375ac27609187ed7b78e187bdc27858277b354ce (diff) | |
download | strongswan-bb6b2fbb8139b6aa5b7e1cdac76fae10708b20dc.tar.bz2 strongswan-bb6b2fbb8139b6aa5b7e1cdac76fae10708b20dc.tar.xz |
lock the set_message_types() method for imvs
Diffstat (limited to 'src/libcharon')
-rw-r--r-- | src/libcharon/plugins/tnc_imv/tnc_imv.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/libcharon/plugins/tnc_imv/tnc_imv.c b/src/libcharon/plugins/tnc_imv/tnc_imv.c index f6459ad9d..fe628ee7e 100644 --- a/src/libcharon/plugins/tnc_imv/tnc_imv.c +++ b/src/libcharon/plugins/tnc_imv/tnc_imv.c @@ -19,6 +19,7 @@ #include <debug.h> #include <library.h> +#include <threading/mutex.h> typedef struct private_tnc_imv_t private_tnc_imv_t; @@ -61,6 +62,11 @@ struct private_tnc_imv_t { * Number of supported message types */ TNC_UInt32 type_count; + + /** + * mutex to lock the imv_t object + */ + mutex_t *mutex; }; METHOD(imv_t, set_id, void, @@ -90,6 +96,9 @@ METHOD(imv_t, set_message_types, void, int len = sizeof(buf); int written; + /* lock the imv_t instance */ + this->mutex->lock(this->mutex); + /* Free an existing MessageType list */ free(this->supported_types); this->supported_types = NULL; @@ -118,6 +127,9 @@ METHOD(imv_t, set_message_types, void, *pos = '\0'; DBG2(DBG_TNC, "IMV %u supports %u message types:%s", this->id, type_count, buf); + + /* lock the imv_t instance */ + this->mutex->unlock(this->mutex); } METHOD(imv_t, type_supported, bool, @@ -151,6 +163,7 @@ METHOD(imv_t, destroy, void, private_tnc_imv_t *this) { dlclose(this->handle); + this->mutex->destroy(this->mutex); free(this->supported_types); free(this->name); free(this->path); @@ -175,6 +188,7 @@ imv_t* tnc_imv_create(char *name, char *path) }, .name = name, .path = path, + .mutex = mutex_create(MUTEX_TYPE_DEFAULT), ); this->handle = dlopen(path, RTLD_LAZY); |