aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2011-01-20 15:52:29 +0100
committerMartin Willi <martin@revosec.ch>2011-01-20 15:52:29 +0100
commit60b71def1ac83ca36946a2d4273d7bdbe4e56d74 (patch)
treec990afd74aeb7a113ebd00e843844cb0a860776a /src
parent44b6b8f9d56e6042599aa9f0a96414de7fc97492 (diff)
downloadstrongswan-60b71def1ac83ca36946a2d4273d7bdbe4e56d74.tar.bz2
strongswan-60b71def1ac83ca36946a2d4273d7bdbe4e56d74.tar.xz
Use wrapped threading functions in ha plugin
Diffstat (limited to 'src')
-rw-r--r--src/libcharon/plugins/ha/ha_ctl.c9
-rw-r--r--src/libcharon/plugins/ha/ha_segments.c14
-rw-r--r--src/libcharon/plugins/ha/ha_socket.c8
3 files changed, 15 insertions, 16 deletions
diff --git a/src/libcharon/plugins/ha/ha_ctl.c b/src/libcharon/plugins/ha/ha_ctl.c
index 980c0551a..15f7824f9 100644
--- a/src/libcharon/plugins/ha/ha_ctl.c
+++ b/src/libcharon/plugins/ha/ha_ctl.c
@@ -21,8 +21,8 @@
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
-#include <pthread.h>
+#include <threading/thread.h>
#include <processing/jobs/callback_job.h>
#define HA_FIFO IPSEC_PIDDIR "/charon.ha"
@@ -60,13 +60,14 @@ struct private_ha_ctl_t {
*/
static job_requeue_t dispatch_fifo(private_ha_ctl_t *this)
{
- int fifo, old;
+ int fifo;
+ bool oldstate;
char buf[8];
u_int segment;
- pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &old);
+ oldstate = thread_cancelability(TRUE);
fifo = open(HA_FIFO, O_RDONLY);
- pthread_setcancelstate(old, NULL);
+ thread_cancelability(oldstate);
if (fifo == -1)
{
DBG1(DBG_CFG, "opening HA fifo failed: %s", strerror(errno));
diff --git a/src/libcharon/plugins/ha/ha_segments.c b/src/libcharon/plugins/ha/ha_segments.c
index 19e0f692e..7c7bef851 100644
--- a/src/libcharon/plugins/ha/ha_segments.c
+++ b/src/libcharon/plugins/ha/ha_segments.c
@@ -15,11 +15,10 @@
#include "ha_segments.h"
-#include <pthread.h>
-
#include <threading/mutex.h>
#include <threading/condvar.h>
#include <utils/linked_list.h>
+#include <threading/thread.h>
#include <processing/jobs/callback_job.h>
#define DEFAULT_HEARTBEAT_DELAY 1000
@@ -255,16 +254,15 @@ METHOD(listener_t, alert_hook, bool,
*/
static job_requeue_t watchdog(private_ha_segments_t *this)
{
- int oldstate;
- bool timeout;
+ bool timeout, oldstate;
this->mutex->lock(this->mutex);
- pthread_cleanup_push((void*)this->mutex->unlock, this->mutex);
- pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &oldstate);
+ thread_cleanup_push((void*)this->mutex->unlock, this->mutex);
+ oldstate = thread_cancelability(TRUE);
timeout = this->condvar->timed_wait(this->condvar, this->mutex,
this->heartbeat_timeout);
- pthread_setcancelstate(oldstate, NULL);
- pthread_cleanup_pop(TRUE);
+ thread_cancelability(oldstate);
+ thread_cleanup_pop(TRUE);
if (timeout)
{
DBG1(DBG_CFG, "no heartbeat received, taking all segments");
diff --git a/src/libcharon/plugins/ha/ha_socket.c b/src/libcharon/plugins/ha/ha_socket.c
index 614c70ed3..086178442 100644
--- a/src/libcharon/plugins/ha/ha_socket.c
+++ b/src/libcharon/plugins/ha/ha_socket.c
@@ -20,10 +20,10 @@
#include <sys/socket.h>
#include <errno.h>
#include <unistd.h>
-#include <pthread.h>
#include <daemon.h>
#include <utils/host.h>
+#include <threading/thread.h>
#include <processing/jobs/callback_job.h>
typedef struct private_ha_socket_t private_ha_socket_t;
@@ -121,12 +121,12 @@ METHOD(ha_socket_t, pull, ha_message_t*,
{
ha_message_t *message;
char buf[1024];
- int oldstate;
+ bool oldstate;
ssize_t len;
- pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &oldstate);
+ oldstate = thread_cancelability(TRUE);
len = recv(this->fd, buf, sizeof(buf), 0);
- pthread_setcancelstate(oldstate, NULL);
+ thread_cancelability(oldstate);
if (len <= 0)
{
switch (errno)