Create pt_tls_dispatcher with separate server address and identity

This commit is contained in:
Martin Willi
2013-01-16 15:02:14 +01:00
parent 18d56a1891
commit bb5037a5e5
2 changed files with 13 additions and 17 deletions
+7 -13
View File
@@ -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;
}
+6 -4
View File
@@ -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_ @}*/