From: Martin Willi Date: Wed, 16 Jan 2013 13:51:20 +0000 (+0100) Subject: Create pt_tls_dispatcher with separate server address and identity X-Git-Tag: 5.0.3dr2~21^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bb5037a5e5731f3cf5d4cc4e6f10ded8d4b09506;p=thirdparty%2Fstrongswan.git Create pt_tls_dispatcher with separate server address and identity --- diff --git a/src/libpttls/pt_tls_dispatcher.c b/src/libpttls/pt_tls_dispatcher.c index f89e1a5f2c..adcf5b4bfa 100644 --- a/src/libpttls/pt_tls_dispatcher.c +++ b/src/libpttls/pt_tls_dispatcher.c @@ -18,7 +18,6 @@ #include #include -#include #include #include @@ -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 c6f3864708..463bd6cc83 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 +#include +#include 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_ @}*/