X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fyaz-pdu-assoc.cpp;h=01cdb586bdc3c3de8fecaa46f1ee15fa145bcbc8;hb=805b4fdf7b70b0e9b298064f24ceff0c1d38e05b;hp=9cf7d2229ce12f24c26fb4cad54ffcae61454a0f;hpb=be1e73ac6baf74b1522837a4faa321a950b8ba26;p=yazpp-moved-to-github.git diff --git a/src/yaz-pdu-assoc.cpp b/src/yaz-pdu-assoc.cpp index 9cf7d22..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; @@ -607,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