mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 21:57:00 +02:00
say bye and de-init DTLS session from DomainServer
This commit is contained in:
parent
fd8e32190e
commit
b40dd6a31a
3 changed files with 15 additions and 0 deletions
|
@ -1001,6 +1001,7 @@ void DomainServer::nodeAdded(SharedNodePointer node) {
|
||||||
void DomainServer::nodeKilled(SharedNodePointer node) {
|
void DomainServer::nodeKilled(SharedNodePointer node) {
|
||||||
|
|
||||||
DomainServerNodeData* nodeData = reinterpret_cast<DomainServerNodeData*>(node->getLinkedData());
|
DomainServerNodeData* nodeData = reinterpret_cast<DomainServerNodeData*>(node->getLinkedData());
|
||||||
|
|
||||||
if (nodeData) {
|
if (nodeData) {
|
||||||
// if this node's UUID matches a static assignment we need to throw it back in the assignment queue
|
// if this node's UUID matches a static assignment we need to throw it back in the assignment queue
|
||||||
if (!nodeData->getStaticAssignmentUUID().isNull()) {
|
if (!nodeData->getStaticAssignmentUUID().isNull()) {
|
||||||
|
@ -1018,6 +1019,14 @@ void DomainServer::nodeKilled(SharedNodePointer node) {
|
||||||
reinterpret_cast<DomainServerNodeData*>(otherNode->getLinkedData())->getSessionSecretHash().remove(node->getUUID());
|
reinterpret_cast<DomainServerNodeData*>(otherNode->getLinkedData())->getSessionSecretHash().remove(node->getUUID());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (_isUsingDTLS) {
|
||||||
|
// check if we need to remove a DTLS session from our in-memory hash
|
||||||
|
DTLSServerSession* existingSession = _dtlsSessions.take(nodeData->getSendingSockAddr());
|
||||||
|
if (existingSession) {
|
||||||
|
delete existingSession;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -105,6 +105,11 @@ DTLSSession::DTLSSession(int end, QUdpSocket& dtlsSocket, HifiSockAddr& destinat
|
||||||
gnutls_transport_set_pull_timeout_function(_gnutlsSession, socketPullTimeout);
|
gnutls_transport_set_pull_timeout_function(_gnutlsSession, socketPullTimeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DTLSSession::~DTLSSession() {
|
||||||
|
gnutls_bye(_gnutlsSession, GNUTLS_SHUT_WR);
|
||||||
|
gnutls_deinit(_gnutlsSession);
|
||||||
|
}
|
||||||
|
|
||||||
void DTLSSession::setCompletedHandshake(bool completedHandshake) {
|
void DTLSSession::setCompletedHandshake(bool completedHandshake) {
|
||||||
_completedHandshake = completedHandshake;
|
_completedHandshake = completedHandshake;
|
||||||
qDebug() << "Completed DTLS handshake with" << _destinationSocket;
|
qDebug() << "Completed DTLS handshake with" << _destinationSocket;
|
||||||
|
|
|
@ -19,6 +19,7 @@ class DTLSSession : public QObject {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
DTLSSession(int end, QUdpSocket& dtlsSocket, HifiSockAddr& destinationSocket);
|
DTLSSession(int end, QUdpSocket& dtlsSocket, HifiSockAddr& destinationSocket);
|
||||||
|
~DTLSSession();
|
||||||
|
|
||||||
static int socketPullTimeout(gnutls_transport_ptr_t ptr, unsigned int ms);
|
static int socketPullTimeout(gnutls_transport_ptr_t ptr, unsigned int ms);
|
||||||
static ssize_t socketPull(gnutls_transport_ptr_t ptr, void* buffer, size_t size);
|
static ssize_t socketPull(gnutls_transport_ptr_t ptr, void* buffer, size_t size);
|
||||||
|
|
Loading…
Reference in a new issue