projects
/
yazpp-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' of ssh://git.indexdata.com/home/git/pub/yazpp
[yazpp-moved-to-github.git]
/
src
/
yaz-pdu-assoc.cpp
diff --git
a/src/yaz-pdu-assoc.cpp
b/src/yaz-pdu-assoc.cpp
index
2957f25
..
01cdb58
100644
(file)
--- a/
src/yaz-pdu-assoc.cpp
+++ b/
src/yaz-pdu-assoc.cpp
@@
-1,5
+1,5
@@
/* This file is part of the yazpp toolkit.
/* 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.
*/
* See the file LICENSE for details.
*/
@@
-21,7
+21,8
@@
using namespace yazpp_1;
namespace yazpp_1 {
class PDU_Assoc_priv {
namespace yazpp_1 {
class PDU_Assoc_priv {
- public:
+ friend class PDU_Assoc;
+ private:
enum {
Connecting,
Listen,
enum {
Connecting,
Listen,
@@
-51,7
+52,9
@@
namespace yazpp_1 {
int idleTime;
int log;
void init(yazpp_1::ISocketObservable *socketObservable);
int idleTime;
int log;
void init(yazpp_1::ISocketObservable *socketObservable);
+ COMSTACK comstack(const char *type_and_host, void **vp);
bool m_session_is_dead;
bool m_session_is_dead;
+ char *cert_fname;
};
}
};
}
@@
-71,10
+74,12
@@
void PDU_Assoc_priv::init(ISocketObservable *socketObservable)
idleTime = 0;
log = YLOG_DEBUG;
m_session_is_dead = false;
idleTime = 0;
log = YLOG_DEBUG;
m_session_is_dead = false;
+ cert_fname = 0;
}
PDU_Assoc::~PDU_Assoc()
{
}
PDU_Assoc::~PDU_Assoc()
{
+ xfree(m_p->cert_fname);
delete m_p;
}
delete m_p;
}
@@
-462,7
+467,7
@@
int PDU_Assoc::send_PDU(const char *buf, int len)
return 0;
}
return 0;
}
-COMSTACK PDU_Assoc::comstack(const char *type_and_host, void **vp)
+COMSTACK PDU_Assoc_priv::comstack(const char *type_and_host, void **vp)
{
return cs_create_host(type_and_host, 2, vp);
}
{
return cs_create_host(type_and_host, 2, vp);
}
@@
-496,10
+501,14
@@
int PDU_Assoc::listen(IPDU_Observer *observer, const char *addr)
m_PDU_Observer = observer;
void *ap;
m_PDU_Observer = observer;
void *ap;
- m_p->cs = comstack(addr, &ap);
+ m_p->cs = m_p->comstack(addr, &ap);
if (!m_p->cs)
return -1;
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;
if (cs_bind(m_p->cs, ap, CS_SERVER) < 0)
return -2;
@@
-521,6
+530,11
@@
int PDU_Assoc::listen(IPDU_Observer *observer, const char *addr)
return 0;
}
return 0;
}
+COMSTACK PDU_Assoc::get_comstack()
+{
+ return m_p->cs;
+}
+
void PDU_Assoc::idleTime(int idleTime)
{
m_p->idleTime = idleTime;
void PDU_Assoc::idleTime(int idleTime)
{
m_p->idleTime = idleTime;
@@
-534,7
+548,7
@@
int PDU_Assoc::connect(IPDU_Observer *observer, const char *addr)
shutdown();
m_PDU_Observer = observer;
void *ap;
shutdown();
m_PDU_Observer = observer;
void *ap;
- m_p->cs = comstack(addr, &ap);
+ m_p->cs = m_p->comstack(addr, &ap);
if (!m_p->cs)
return -1;
int res = cs_connect(m_p->cs, ap);
if (!m_p->cs)
return -1;
int res = cs_connect(m_p->cs, ap);
@@
-600,6
+614,15
@@
const char*PDU_Assoc::getpeername()
return 0;
return cs_addrstr(m_p->cs);
}
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
/*
* Local variables:
* c-basic-offset: 4