aboutsummaryrefslogtreecommitdiffstats
path: root/src/libpttls
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2013-01-16 14:51:20 +0100
committerMartin Willi <martin@revosec.ch>2013-01-16 15:02:14 +0100
commitbb5037a5e5731f3cf5d4cc4e6f10ded8d4b09506 (patch)
tree4d2a3973f7fa56c8e31c6d62f99de0c790785740 /src/libpttls
parent18d56a1891074bab808c2f752c74b816b8a4843e (diff)
downloadstrongswan-bb5037a5e5731f3cf5d4cc4e6f10ded8d4b09506.tar.bz2
strongswan-bb5037a5e5731f3cf5d4cc4e6f10ded8d4b09506.tar.xz
Create pt_tls_dispatcher with separate server address and identity
Diffstat (limited to 'src/libpttls')
-rw-r--r--src/libpttls/pt_tls_dispatcher.c20
-rw-r--r--src/libpttls/pt_tls_dispatcher.h10
2 files changed, 13 insertions, 17 deletions
diff --git a/src/libpttls/pt_tls_dispatcher.c b/src/libpttls/pt_tls_dispatcher.c
index f89e1a5f2..adcf5b4bf 100644
--- a/src/libpttls/pt_tls_dispatcher.c
+++ b/src/libpttls/pt_tls_dispatcher.c
@@ -18,7 +18,6 @@
#include <threading/thread.h>
#include <utils/debug.h>
-#include <networking/host.h>
#include <processing/jobs/callback_job.h>
#include <errno.h>
@@ -51,22 +50,14 @@ struct private_pt_tls_dispatcher_t {
/**
* Open listening server socket
*/
-static bool open_socket(private_pt_tls_dispatcher_t *this,
- char *server, u_int16_t port)
+static bool open_socket(private_pt_tls_dispatcher_t *this, host_t *host)
{
- host_t *host;
-
this->fd = socket(AF_INET, SOCK_STREAM, 0);
if (this->fd == -1)
{
DBG1(DBG_TNC, "opening PT-TLS socket failed: %s", strerror(errno));
return FALSE;
}
- host = host_create_from_dns(server, AF_UNSPEC, port);
- if (!host)
- {
- return FALSE;
- }
if (bind(this->fd, host->get_sockaddr(host),
*host->get_sockaddr_len(host)) == -1)
{
@@ -160,7 +151,8 @@ METHOD(pt_tls_dispatcher_t, destroy, void,
/**
* See header
*/
-pt_tls_dispatcher_t *pt_tls_dispatcher_create(char *server, u_int16_t port)
+pt_tls_dispatcher_t *pt_tls_dispatcher_create(host_t *address,
+ identification_t *id)
{
private_pt_tls_dispatcher_t *this;
@@ -169,15 +161,17 @@ pt_tls_dispatcher_t *pt_tls_dispatcher_create(char *server, u_int16_t port)
.dispatch = _dispatch,
.destroy = _destroy,
},
- .server = identification_create_from_string(server),
+ .server = id,
.fd = -1,
);
- if (!open_socket(this, server, port))
+ if (!open_socket(this, address))
{
+ address->destroy(address);
destroy(this);
return NULL;
}
+ address->destroy(address);
return &this->public;
}
diff --git a/src/libpttls/pt_tls_dispatcher.h b/src/libpttls/pt_tls_dispatcher.h
index c6f386470..463bd6cc8 100644
--- a/src/libpttls/pt_tls_dispatcher.h
+++ b/src/libpttls/pt_tls_dispatcher.h
@@ -21,7 +21,8 @@
#ifndef PT_TLS_DISPATCHER_H_
#define PT_TLS_DISPATCHER_H_
-#include <utils/utils.h>
+#include <networking/host.h>
+#include <utils/identification.h>
typedef struct pt_tls_dispatcher_t pt_tls_dispatcher_t;
@@ -46,10 +47,11 @@ struct pt_tls_dispatcher_t {
/**
* Create a pt_tls_dispatcher instance.
*
- * @param server server address
- * @param port server port to listen
+ * @param address server address with port to listen on, gets owned
+ * @param id TLS server identity, gets owned
* @return dispatcher service
*/
-pt_tls_dispatcher_t *pt_tls_dispatcher_create(char *server, u_int16_t port);
+pt_tls_dispatcher_t *pt_tls_dispatcher_create(host_t *address,
+ identification_t *id);
#endif /** PT_TLS_DISPATCHER_H_ @}*/