From e096ff91f6a7e66b08d594438868238b42a50dda Mon Sep 17 00:00:00 2001 From: Clement Date: Fri, 18 May 2018 15:01:19 -0700 Subject: [PATCH] Explicitely manage HTTPManager lifetime --- assignment-client/src/octree/OctreeServer.cpp | 3 +-- assignment-client/src/octree/OctreeServer.h | 2 +- domain-server/src/DomainServer.cpp | 3 +-- domain-server/src/DomainServer.h | 2 +- libraries/embedded-webserver/src/HTTPConnection.cpp | 1 - libraries/embedded-webserver/src/HTTPConnection.h | 3 --- libraries/embedded-webserver/src/HTTPManager.cpp | 3 +-- libraries/embedded-webserver/src/HTTPManager.h | 2 +- libraries/embedded-webserver/src/HTTPSConnection.h | 2 +- libraries/embedded-webserver/src/HTTPSManager.cpp | 4 ++-- libraries/embedded-webserver/src/HTTPSManager.h | 4 ++-- 11 files changed, 11 insertions(+), 18 deletions(-) diff --git a/assignment-client/src/octree/OctreeServer.cpp b/assignment-client/src/octree/OctreeServer.cpp index fad2c1f026..acf0abeed1 100644 --- a/assignment-client/src/octree/OctreeServer.cpp +++ b/assignment-client/src/octree/OctreeServer.cpp @@ -233,7 +233,6 @@ OctreeServer::OctreeServer(ReceivedMessage& message) : _argc(0), _argv(NULL), _parsedArgV(NULL), - _httpManager(NULL), _statusPort(0), _packetsPerClientPerInterval(10), _packetsTotalPerInterval(DEFAULT_PACKETS_PER_INTERVAL), @@ -285,7 +284,7 @@ void OctreeServer::initHTTPManager(int port) { QString documentRoot = QString("%1/web").arg(PathUtils::getAppDataPath()); // setup an httpManager with us as the request handler and the parent - _httpManager = new HTTPManager(QHostAddress::AnyIPv4, port, documentRoot, this, this); + _httpManager.reset(new HTTPManager(QHostAddress::AnyIPv4, port, documentRoot, this)); } bool OctreeServer::handleHTTPRequest(HTTPConnection* connection, const QUrl& url, bool skipSubHandler) { diff --git a/assignment-client/src/octree/OctreeServer.h b/assignment-client/src/octree/OctreeServer.h index b25e537d70..87145dd46e 100644 --- a/assignment-client/src/octree/OctreeServer.h +++ b/assignment-client/src/octree/OctreeServer.h @@ -183,7 +183,7 @@ protected: bool _isShuttingDown = false; - HTTPManager* _httpManager; + std::unique_ptr _httpManager; int _statusPort; QString _statusHost; diff --git a/domain-server/src/DomainServer.cpp b/domain-server/src/DomainServer.cpp index 4e65df495c..991b8627d0 100644 --- a/domain-server/src/DomainServer.cpp +++ b/domain-server/src/DomainServer.cpp @@ -149,7 +149,6 @@ DomainServer::DomainServer(int argc, char* argv[]) : QCoreApplication(argc, argv), _gatekeeper(this), _httpManager(QHostAddress::AnyIPv4, DOMAIN_SERVER_HTTP_PORT, QString("%1/resources/web/").arg(QCoreApplication::applicationDirPath()), this), - _httpsManager(NULL), _allAssignments(), _unfulfilledAssignments(), _isUsingDTLS(false), @@ -439,7 +438,7 @@ bool DomainServer::optionallyReadX509KeyAndCertificate() { QSslCertificate sslCertificate(&certFile); QSslKey privateKey(&keyFile, QSsl::Rsa, QSsl::Pem, QSsl::PrivateKey, keyPassphraseString.toUtf8()); - _httpsManager = new HTTPSManager(QHostAddress::AnyIPv4, DOMAIN_SERVER_HTTPS_PORT, sslCertificate, privateKey, QString(), this, this); + _httpsManager.reset(new HTTPSManager(QHostAddress::AnyIPv4, DOMAIN_SERVER_HTTPS_PORT, sslCertificate, privateKey, QString(), this)); qDebug() << "TCP server listening for HTTPS connections on" << DOMAIN_SERVER_HTTPS_PORT; diff --git a/domain-server/src/DomainServer.h b/domain-server/src/DomainServer.h index 01adbd99a9..3462f14e3c 100644 --- a/domain-server/src/DomainServer.h +++ b/domain-server/src/DomainServer.h @@ -220,7 +220,7 @@ private: DomainGatekeeper _gatekeeper; HTTPManager _httpManager; - HTTPSManager* _httpsManager; + std::unique_ptr _httpsManager; QHash _allAssignments; QQueue _unfulfilledAssignments; diff --git a/libraries/embedded-webserver/src/HTTPConnection.cpp b/libraries/embedded-webserver/src/HTTPConnection.cpp index 12da599575..fa4fd39ca8 100644 --- a/libraries/embedded-webserver/src/HTTPConnection.cpp +++ b/libraries/embedded-webserver/src/HTTPConnection.cpp @@ -33,7 +33,6 @@ HTTPConnection::HTTPConnection (QTcpSocket* socket, HTTPManager* parentManager) QObject(parentManager), _parentManager(parentManager), _socket(socket), - _stream(socket), _address(socket->peerAddress()) { // take over ownership of the socket diff --git a/libraries/embedded-webserver/src/HTTPConnection.h b/libraries/embedded-webserver/src/HTTPConnection.h index e4d23e3c90..31ffbc9641 100644 --- a/libraries/embedded-webserver/src/HTTPConnection.h +++ b/libraries/embedded-webserver/src/HTTPConnection.h @@ -112,9 +112,6 @@ protected: /// The underlying socket. QTcpSocket* _socket; - - /// The data stream for writing to the socket. - QDataStream _stream; /// The stored address. QHostAddress _address; diff --git a/libraries/embedded-webserver/src/HTTPManager.cpp b/libraries/embedded-webserver/src/HTTPManager.cpp index db6fc8e084..4a75994e12 100644 --- a/libraries/embedded-webserver/src/HTTPManager.cpp +++ b/libraries/embedded-webserver/src/HTTPManager.cpp @@ -24,8 +24,7 @@ const int SOCKET_ERROR_EXIT_CODE = 2; const int SOCKET_CHECK_INTERVAL_IN_MS = 30000; -HTTPManager::HTTPManager(const QHostAddress& listenAddress, quint16 port, const QString& documentRoot, HTTPRequestHandler* requestHandler, QObject* parent) : - QTcpServer(parent), +HTTPManager::HTTPManager(const QHostAddress& listenAddress, quint16 port, const QString& documentRoot, HTTPRequestHandler* requestHandler) : _listenAddress(listenAddress), _documentRoot(documentRoot), _requestHandler(requestHandler), diff --git a/libraries/embedded-webserver/src/HTTPManager.h b/libraries/embedded-webserver/src/HTTPManager.h index cb76eed9f2..e0477bd797 100644 --- a/libraries/embedded-webserver/src/HTTPManager.h +++ b/libraries/embedded-webserver/src/HTTPManager.h @@ -33,7 +33,7 @@ class HTTPManager : public QTcpServer, public HTTPRequestHandler { Q_OBJECT public: /// Initializes the manager. - HTTPManager(const QHostAddress& listenAddress, quint16 port, const QString& documentRoot, HTTPRequestHandler* requestHandler = NULL, QObject* parent = 0); + HTTPManager(const QHostAddress& listenAddress, quint16 port, const QString& documentRoot, HTTPRequestHandler* requestHandler = NULL); bool handleHTTPRequest(HTTPConnection* connection, const QUrl& url, bool skipSubHandler = false) override; diff --git a/libraries/embedded-webserver/src/HTTPSConnection.h b/libraries/embedded-webserver/src/HTTPSConnection.h index 7b53dc0063..3e6c752a08 100644 --- a/libraries/embedded-webserver/src/HTTPSConnection.h +++ b/libraries/embedded-webserver/src/HTTPSConnection.h @@ -23,4 +23,4 @@ protected slots: void handleSSLErrors(const QList& errors); }; -#endif // hifi_HTTPSConnection_h \ No newline at end of file +#endif // hifi_HTTPSConnection_h diff --git a/libraries/embedded-webserver/src/HTTPSManager.cpp b/libraries/embedded-webserver/src/HTTPSManager.cpp index 8ba44f98ac..95339a0dd6 100644 --- a/libraries/embedded-webserver/src/HTTPSManager.cpp +++ b/libraries/embedded-webserver/src/HTTPSManager.cpp @@ -16,8 +16,8 @@ #include "HTTPSConnection.h" HTTPSManager::HTTPSManager(QHostAddress listenAddress, quint16 port, const QSslCertificate& certificate, const QSslKey& privateKey, - const QString& documentRoot, HTTPSRequestHandler* requestHandler, QObject* parent) : - HTTPManager(listenAddress, port, documentRoot, requestHandler, parent), + const QString& documentRoot, HTTPSRequestHandler* requestHandler) : + HTTPManager(listenAddress, port, documentRoot, requestHandler), _certificate(certificate), _privateKey(privateKey), _sslRequestHandler(requestHandler) diff --git a/libraries/embedded-webserver/src/HTTPSManager.h b/libraries/embedded-webserver/src/HTTPSManager.h index 2d3cc9ed62..433dd35d7d 100644 --- a/libraries/embedded-webserver/src/HTTPSManager.h +++ b/libraries/embedded-webserver/src/HTTPSManager.h @@ -31,7 +31,7 @@ public: const QSslCertificate& certificate, const QSslKey& privateKey, const QString& documentRoot, - HTTPSRequestHandler* requestHandler = NULL, QObject* parent = 0); + HTTPSRequestHandler* requestHandler = NULL); void setCertificate(const QSslCertificate& certificate) { _certificate = certificate; } void setPrivateKey(const QSslKey& privateKey) { _privateKey = privateKey; } @@ -48,4 +48,4 @@ private: HTTPSRequestHandler* _sslRequestHandler; }; -#endif // hifi_HTTPSManager_h \ No newline at end of file +#endif // hifi_HTTPSManager_h