mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2024-12-27 08:19:30 +08:00
Merge pull request #10492 from Chocobo1/server
Remove closed connections immediately
This commit is contained in:
commit
7db2d1b8cf
@ -107,16 +107,23 @@ void Server::incomingConnection(const qintptr socketDescriptor)
|
||||
}
|
||||
|
||||
auto *c = new Connection(serverSocket, m_requestHandler, this);
|
||||
m_connections.append(c);
|
||||
m_connections.insert(c);
|
||||
connect(serverSocket, &QAbstractSocket::disconnected, this, [c, this]() { removeConnection(c); });
|
||||
}
|
||||
|
||||
void Server::removeConnection(Connection *connection)
|
||||
{
|
||||
m_connections.remove(connection);
|
||||
connection->deleteLater();
|
||||
}
|
||||
|
||||
void Server::dropTimedOutConnection()
|
||||
{
|
||||
QMutableListIterator<Connection *> i(m_connections);
|
||||
QMutableSetIterator<Connection *> i(m_connections);
|
||||
while (i.hasNext()) {
|
||||
const auto *connection = i.next();
|
||||
if (connection->isClosed() || connection->hasExpired(KEEP_ALIVE_DURATION)) {
|
||||
delete connection;
|
||||
Connection *connection = i.next();
|
||||
if (connection->hasExpired(KEEP_ALIVE_DURATION)) {
|
||||
connection->deleteLater();
|
||||
i.remove();
|
||||
}
|
||||
}
|
||||
|
@ -31,6 +31,7 @@
|
||||
#ifndef HTTP_SERVER_H
|
||||
#define HTTP_SERVER_H
|
||||
|
||||
#include <QSet>
|
||||
#include <QSslCertificate>
|
||||
#include <QSslKey>
|
||||
#include <QTcpServer>
|
||||
@ -56,9 +57,10 @@ namespace Http
|
||||
|
||||
private:
|
||||
void incomingConnection(qintptr socketDescriptor);
|
||||
void removeConnection(Connection *connection);
|
||||
|
||||
IRequestHandler *m_requestHandler;
|
||||
QList<Connection *> m_connections; // for tracking persistent connections
|
||||
QSet<Connection *> m_connections; // for tracking persistent connections
|
||||
|
||||
bool m_https;
|
||||
QList<QSslCertificate> m_certificates;
|
||||
|
Loading…
Reference in New Issue
Block a user