projects
/
quassel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ssl: Use Pending Connections mechanism for SslServer
[quassel.git]
/
src
/
core
/
sslserver.cpp
diff --git
a/src/core/sslserver.cpp
b/src/core/sslserver.cpp
index
e5d6e27
..
f7d35c3
100644
(file)
--- a/
src/core/sslserver.cpp
+++ b/
src/core/sslserver.cpp
@@
-1,5
+1,5
@@
/***************************************************************************
/***************************************************************************
- * Copyright (C) 2005-20
19
by the Quassel Project *
+ * Copyright (C) 2005-20
20
by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
@@
-20,16
+20,12
@@
#include "sslserver.h"
#include "sslserver.h"
-#ifdef HAVE_SSL
-# include <QSslSocket>
-#endif
-
#include <QDateTime>
#include <QDateTime>
+#include <QSslSocket>
+#include "core.h"
#include "quassel.h"
#include "quassel.h"
-#ifdef HAVE_SSL
-
SslServer::SslServer(QObject* parent)
: QTcpServer(parent)
{
SslServer::SslServer(QObject* parent)
: QTcpServer(parent)
{
@@
-61,28
+57,19
@@
SslServer::SslServer(QObject* parent)
}
}
}
}
-QTcpSocket* SslServer::nextPendingConnection()
-{
- if (_pendingConnections.isEmpty())
- return nullptr;
- else
- return _pendingConnections.takeFirst();
-}
-
void SslServer::incomingConnection(qintptr socketDescriptor)
{
void SslServer::incomingConnection(qintptr socketDescriptor)
{
- auto* s
erverS
ocket = new QSslSocket(this);
- if (s
erverS
ocket->setSocketDescriptor(socketDescriptor)) {
+ auto* socket = new QSslSocket(this);
+ if (socket->setSocketDescriptor(socketDescriptor)) {
if (isCertValid()) {
if (isCertValid()) {
- s
erverS
ocket->setLocalCertificate(_cert);
- s
erverS
ocket->setPrivateKey(_key);
- s
erverS
ocket->addCaCertificates(_ca);
+ socket->setLocalCertificate(_cert);
+ socket->setPrivateKey(_key);
+ socket->addCaCertificates(_ca);
}
}
- _pendingConnections << serverSocket;
- emit newConnection();
+ addPendingConnection(socket);
}
else {
}
else {
- delete s
erverS
ocket;
+ delete socket;
}
}
}
}
@@
-199,6
+186,11
@@
bool SslServer::setCertificate(const QString& path, const QString& keyPath)
return false;
}
return false;
}
+ _certificateExpires = untestedCert.expiryDate();
+ if (_metricsServer) {
+ _metricsServer->setCertificateExpires(_certificateExpires);
+ }
+
_isCertValid = true;
// All keys are valid, update the externally visible copy used for new connections.
_isCertValid = true;
// All keys are valid, update the externally visible copy used for new connections.
@@
-223,4
+215,9
@@
QSslKey SslServer::loadKey(QFile* keyFile)
return key;
}
return key;
}
-#endif // HAVE_SSL
+void SslServer::setMetricsServer(MetricsServer* metricsServer) {
+ _metricsServer = metricsServer;
+ if (_metricsServer) {
+ _metricsServer->setCertificateExpires(_certificateExpires);
+ }
+}