|
@@ -85,9 +85,6 @@ DtlsTransport::DtlsTransport(shared_ptr<IceTransport> lower, certificate_ptr cer
|
|
gnutls_transport_set_pull_function(mSession, ReadCallback);
|
|
gnutls_transport_set_pull_function(mSession, ReadCallback);
|
|
gnutls_transport_set_pull_timeout_function(mSession, TimeoutCallback);
|
|
gnutls_transport_set_pull_timeout_function(mSession, TimeoutCallback);
|
|
|
|
|
|
- mRecvThread = std::thread(&DtlsTransport::runRecvLoop, this);
|
|
|
|
- registerIncoming();
|
|
|
|
-
|
|
|
|
} catch (...) {
|
|
} catch (...) {
|
|
gnutls_deinit(mSession);
|
|
gnutls_deinit(mSession);
|
|
throw;
|
|
throw;
|
|
@@ -100,6 +97,15 @@ DtlsTransport::~DtlsTransport() {
|
|
gnutls_deinit(mSession);
|
|
gnutls_deinit(mSession);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void DtlsTransport::start() {
|
|
|
|
+ Transport::start();
|
|
|
|
+
|
|
|
|
+ registerIncoming();
|
|
|
|
+
|
|
|
|
+ PLOG_DEBUG << "Starting DTLS recv thread";
|
|
|
|
+ mRecvThread = std::thread(&DtlsTransport::runRecvLoop, this);
|
|
|
|
+}
|
|
|
|
+
|
|
bool DtlsTransport::stop() {
|
|
bool DtlsTransport::stop() {
|
|
if (!Transport::stop())
|
|
if (!Transport::stop())
|
|
return false;
|
|
return false;
|
|
@@ -137,17 +143,12 @@ void DtlsTransport::incoming(message_ptr message) {
|
|
mIncomingQueue.push(message);
|
|
mIncomingQueue.push(message);
|
|
}
|
|
}
|
|
|
|
|
|
-void DtlsTransport::postCreation() {
|
|
|
|
- // Dummy
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
void DtlsTransport::postHandshake() {
|
|
void DtlsTransport::postHandshake() {
|
|
// Dummy
|
|
// Dummy
|
|
}
|
|
}
|
|
|
|
|
|
void DtlsTransport::runRecvLoop() {
|
|
void DtlsTransport::runRecvLoop() {
|
|
const size_t maxMtu = 4096;
|
|
const size_t maxMtu = 4096;
|
|
- postCreation();
|
|
|
|
// Handshake loop
|
|
// Handshake loop
|
|
try {
|
|
try {
|
|
changeState(State::Connecting);
|
|
changeState(State::Connecting);
|
|
@@ -362,9 +363,6 @@ DtlsTransport::DtlsTransport(shared_ptr<IceTransport> lower, shared_ptr<Certific
|
|
SSL_set_options(mSsl, SSL_OP_SINGLE_ECDH_USE);
|
|
SSL_set_options(mSsl, SSL_OP_SINGLE_ECDH_USE);
|
|
SSL_set_tmp_ecdh(mSsl, ecdh.get());
|
|
SSL_set_tmp_ecdh(mSsl, ecdh.get());
|
|
|
|
|
|
- mRecvThread = std::thread(&DtlsTransport::runRecvLoop, this);
|
|
|
|
- registerIncoming();
|
|
|
|
-
|
|
|
|
} catch (...) {
|
|
} catch (...) {
|
|
if (mSsl)
|
|
if (mSsl)
|
|
SSL_free(mSsl);
|
|
SSL_free(mSsl);
|
|
@@ -381,6 +379,15 @@ DtlsTransport::~DtlsTransport() {
|
|
SSL_CTX_free(mCtx);
|
|
SSL_CTX_free(mCtx);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void DtlsTransport::start() {
|
|
|
|
+ Transport::start();
|
|
|
|
+
|
|
|
|
+ registerIncoming();
|
|
|
|
+
|
|
|
|
+ PLOG_DEBUG << "Starting DTLS recv thread";
|
|
|
|
+ mRecvThread = std::thread(&DtlsTransport::runRecvLoop, this);
|
|
|
|
+}
|
|
|
|
+
|
|
bool DtlsTransport::stop() {
|
|
bool DtlsTransport::stop() {
|
|
if (!Transport::stop())
|
|
if (!Transport::stop())
|
|
return false;
|
|
return false;
|
|
@@ -412,10 +419,6 @@ void DtlsTransport::incoming(message_ptr message) {
|
|
mIncomingQueue.push(message);
|
|
mIncomingQueue.push(message);
|
|
}
|
|
}
|
|
|
|
|
|
-void DtlsTransport::postCreation() {
|
|
|
|
- // Dummy
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
void DtlsTransport::postHandshake() {
|
|
void DtlsTransport::postHandshake() {
|
|
// Dummy
|
|
// Dummy
|
|
}
|
|
}
|