aboutsummaryrefslogtreecommitdiffstats
path: root/src/charon
diff options
context:
space:
mode:
authorMartin Willi <martin@strongswan.org>2007-10-02 11:20:07 +0000
committerMartin Willi <martin@strongswan.org>2007-10-02 11:20:07 +0000
commit06011f688267e576899841abdba8122ab8b4d021 (patch)
treec9e992d9328f4ee0cecc59f5af632a8a49de524a /src/charon
parenta3f100fa09fdd463ec2a70277fe222bc93ad8a72 (diff)
downloadstrongswan-06011f688267e576899841abdba8122ab8b4d021.tar.bz2
strongswan-06011f688267e576899841abdba8122ab8b4d021.tar.xz
remove control sockets on startup, as we don't have privileges on shutdown
Diffstat (limited to 'src/charon')
-rwxr-xr-xsrc/charon/control/interfaces/stroke_interface.c6
-rw-r--r--src/charon/control/interfaces/xml_interface.c8
2 files changed, 5 insertions, 9 deletions
diff --git a/src/charon/control/interfaces/stroke_interface.c b/src/charon/control/interfaces/stroke_interface.c
index f6935d547..a15090e4a 100755
--- a/src/charon/control/interfaces/stroke_interface.c
+++ b/src/charon/control/interfaces/stroke_interface.c
@@ -51,9 +51,6 @@
#define PATH_BUF 256
#define STROKE_THREADS 3
-struct sockaddr_un socket_addr = { AF_UNIX, STROKE_SOCKET};
-
-
typedef struct private_stroke_interface_t private_stroke_interface_t;
/**
@@ -1676,7 +1673,6 @@ static void destroy(private_stroke_interface_t *this)
{
this->job->cancel(this->job);
free(this);
- unlink(socket_addr.sun_path);
}
/*
@@ -1684,6 +1680,7 @@ static void destroy(private_stroke_interface_t *this)
*/
interface_t *interface_create()
{
+ struct sockaddr_un socket_addr = { AF_UNIX, STROKE_SOCKET};
private_stroke_interface_t *this = malloc_thing(private_stroke_interface_t);
mode_t old;
@@ -1699,6 +1696,7 @@ interface_t *interface_create()
return NULL;
}
+ unlink(socket_addr.sun_path);
old = umask(~(S_IRWXU | S_IRWXG));
if (bind(this->socket, (struct sockaddr *)&socket_addr, sizeof(socket_addr)) < 0)
{
diff --git a/src/charon/control/interfaces/xml_interface.c b/src/charon/control/interfaces/xml_interface.c
index fdb8e1c75..02da1064d 100644
--- a/src/charon/control/interfaces/xml_interface.c
+++ b/src/charon/control/interfaces/xml_interface.c
@@ -440,9 +440,6 @@ static job_requeue_t dispatch(private_xml_interface_t *this)
return JOB_REQUEUE_DIRECT;
}
-/** XML unix socket */
-struct sockaddr_un unix_addr = { AF_UNIX, IPSEC_PIDDIR "/charon.xml"};
-
/**
* Implementation of itnerface_t.destroy.
*/
@@ -450,7 +447,6 @@ static void destroy(private_xml_interface_t *this)
{
this->job->cancel(this->job);
close(this->socket);
- unlink(unix_addr.sun_path);
free(this);
}
@@ -459,6 +455,7 @@ static void destroy(private_xml_interface_t *this)
*/
interface_t *interface_create()
{
+ struct sockaddr_un unix_addr = { AF_UNIX, IPSEC_PIDDIR "/charon.xml"};
private_xml_interface_t *this = malloc_thing(private_xml_interface_t);
mode_t old;
@@ -472,7 +469,8 @@ interface_t *interface_create()
free(this);
return NULL;
}
-
+
+ unlink(unix_addr.sun_path);
old = umask(~(S_IRWXU | S_IRWXG));
if (bind(this->socket, (struct sockaddr *)&unix_addr, sizeof(unix_addr)) < 0)
{