From d3a68331339f89ed6c939a6b0aec49204b429cae Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Fri, 21 Aug 2015 20:20:50 +0200 Subject: [PATCH] delete WebSockets on ScriptEngine finish --- libraries/script-engine/src/WebSocketClass.cpp | 10 ++++++---- libraries/script-engine/src/WebSocketServerClass.cpp | 1 + 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/libraries/script-engine/src/WebSocketClass.cpp b/libraries/script-engine/src/WebSocketClass.cpp index 52059d1290..7c7670fcce 100644 --- a/libraries/script-engine/src/WebSocketClass.cpp +++ b/libraries/script-engine/src/WebSocketClass.cpp @@ -42,7 +42,9 @@ QScriptValue WebSocketClass::constructor(QScriptContext* context, QScriptEngine* if (context->argumentCount() > 0) { url = context->argument(0).toString(); } - return engine->newQObject(new WebSocketClass(engine, url)); + auto webSocketClass = new WebSocketClass(engine, url); + connect(static_cast(engine), &ScriptEngine::finished, webSocketClass, &QObject::deleteLater); + return engine->newQObject(webSocketClass); } WebSocketClass::~WebSocketClass() { @@ -54,7 +56,7 @@ void WebSocketClass::send(QScriptValue message) { } void WebSocketClass::close() { - this->close(QWebSocketProtocol::CloseCode::CloseCodeNormal); + this->close(QWebSocketProtocol::CloseCodeNormal); } void WebSocketClass::close(QWebSocketProtocol::CloseCode closeCode) { @@ -67,7 +69,7 @@ void WebSocketClass::close(QWebSocketProtocol::CloseCode closeCode, QString reas void WebSocketClass::handleOnClose() { bool hasError = false; - if (_webSocket->error() != QAbstractSocket::SocketError::UnknownSocketError) { + if (_webSocket->error() != QAbstractSocket::UnknownSocketError) { hasError = true; if (_onErrorEvent.isFunction()) { _onErrorEvent.call(); @@ -76,7 +78,7 @@ void WebSocketClass::handleOnClose() { if (_onCloseEvent.isFunction()) { QScriptValueList args; QScriptValue arg = _engine->newObject(); - arg.setProperty("code", hasError ? QWebSocketProtocol::CloseCode::CloseCodeAbnormalDisconnection : _webSocket->closeCode()); + arg.setProperty("code", hasError ? QWebSocketProtocol::CloseCodeAbnormalDisconnection : _webSocket->closeCode()); arg.setProperty("reason", _webSocket->closeReason()); arg.setProperty("wasClean", !hasError); args << arg; diff --git a/libraries/script-engine/src/WebSocketServerClass.cpp b/libraries/script-engine/src/WebSocketServerClass.cpp index dbe92510e4..045b39d800 100644 --- a/libraries/script-engine/src/WebSocketServerClass.cpp +++ b/libraries/script-engine/src/WebSocketServerClass.cpp @@ -49,6 +49,7 @@ WebSocketServerClass::~WebSocketServerClass() { if (_webSocketServer.isListening()) { close(); } + _clients.empty(); } void WebSocketServerClass::onNewConnection() {