X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fyaz-pdu-assoc.cpp;h=01cdb586bdc3c3de8fecaa46f1ee15fa145bcbc8;hb=805b4fdf7b70b0e9b298064f24ceff0c1d38e05b;hp=ba962dc1edabdb926829071412baafc8b526b36f;hpb=1712037ea49f815f10b68b4231dca7a91802ff04;p=yazpp-moved-to-github.git diff --git a/src/yaz-pdu-assoc.cpp b/src/yaz-pdu-assoc.cpp index ba962dc..01cdb58 100644 --- a/src/yaz-pdu-assoc.cpp +++ b/src/yaz-pdu-assoc.cpp @@ -1,5 +1,5 @@ /* This file is part of the yazpp toolkit. - * Copyright (C) 1998-2012 Index Data and Mike Taylor + * Copyright (C) 1998-2013 Index Data and Mike Taylor * See the file LICENSE for details. */ @@ -54,6 +54,7 @@ namespace yazpp_1 { void init(yazpp_1::ISocketObservable *socketObservable); COMSTACK comstack(const char *type_and_host, void **vp); bool m_session_is_dead; + char *cert_fname; }; } @@ -73,10 +74,12 @@ void PDU_Assoc_priv::init(ISocketObservable *socketObservable) idleTime = 0; log = YLOG_DEBUG; m_session_is_dead = false; + cert_fname = 0; } PDU_Assoc::~PDU_Assoc() { + xfree(m_p->cert_fname); delete m_p; } @@ -502,6 +505,10 @@ int PDU_Assoc::listen(IPDU_Observer *observer, const char *addr) if (!m_p->cs) return -1; + + if (m_p->cert_fname) + cs_set_ssl_certificate_file(m_p->cs, m_p->cert_fname); + if (cs_bind(m_p->cs, ap, CS_SERVER) < 0) return -2; @@ -523,6 +530,11 @@ int PDU_Assoc::listen(IPDU_Observer *observer, const char *addr) return 0; } +COMSTACK PDU_Assoc::get_comstack() +{ + return m_p->cs; +} + void PDU_Assoc::idleTime(int idleTime) { m_p->idleTime = idleTime; @@ -602,6 +614,15 @@ const char*PDU_Assoc::getpeername() return 0; return cs_addrstr(m_p->cs); } + +void PDU_Assoc::set_cert_fname(const char *fname) +{ + xfree(m_p->cert_fname); + m_p->cert_fname = 0; + if (fname) + m_p->cert_fname = xstrdup(fname); +} + /* * Local variables: * c-basic-offset: 4