diff options
author | Peter Kümmel <syntheticpp@gmx.net> | 2014-08-02 14:48:32 +0200 |
---|---|---|
committer | Peter Kümmel <syntheticpp@gmx.net> | 2014-11-18 18:57:44 +0100 |
commit | 64927e04f202d33b9a9a1f94141ef692c0b513ac (patch) | |
tree | a6f1737afb4e1420b74797865f7ea3da913ff401 /src/websockets | |
parent | 44a071396e91de32eb3efd12a1ed230ed1632aea (diff) | |
download | qtwebsockets-64927e04f202d33b9a9a1f94141ef692c0b513ac.tar.gz |
Set parent of internal server objects
After moving the websocket server into another thread
current code doesn't work because then the QTcpServer/QSslServer
objects reside in a different thread:
"QWarning: QObject: Cannot create children for a parent that is in a different thread."
QObject::moveToThread(QThread*) also moves QObjects's children, therefore the
internal server objects need to be children of QWebSocketServer.
Change-Id: Ic7e8a564cd87400a4ab7258e3799157ed359c098
Reviewed-by: Liang Qi <liang.qi@theqtcompany.com>
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
Diffstat (limited to 'src/websockets')
-rw-r--r-- | src/websockets/qwebsocketserver.cpp | 2 | ||||
-rw-r--r-- | src/websockets/qwebsocketserver_p.cpp | 6 |
2 files changed, 4 insertions, 4 deletions
diff --git a/src/websockets/qwebsocketserver.cpp b/src/websockets/qwebsocketserver.cpp index 59cfd89..b7368b3 100644 --- a/src/websockets/qwebsocketserver.cpp +++ b/src/websockets/qwebsocketserver.cpp @@ -247,6 +247,8 @@ QWebSocketServer::QWebSocketServer(const QString &serverName, SslMode secureMode */ QWebSocketServer::~QWebSocketServer() { + Q_D(QWebSocketServer); + d->close(true); } /*! diff --git a/src/websockets/qwebsocketserver_p.cpp b/src/websockets/qwebsocketserver_p.cpp index 28f9bea..77caa51 100644 --- a/src/websockets/qwebsocketserver_p.cpp +++ b/src/websockets/qwebsocketserver_p.cpp @@ -74,7 +74,7 @@ QWebSocketServerPrivate::QWebSocketServerPrivate(const QString &serverName, void QWebSocketServerPrivate::init() { if (m_secureMode == NonSecureMode) { - m_pTcpServer = new QTcpServer(); + m_pTcpServer = new QTcpServer(q_ptr); if (Q_LIKELY(m_pTcpServer)) QObjectPrivate::connect(m_pTcpServer, &QTcpServer::newConnection, this, &QWebSocketServerPrivate::onNewConnection); @@ -82,7 +82,7 @@ void QWebSocketServerPrivate::init() qFatal("Could not allocate memory for tcp server."); } else { #ifndef QT_NO_SSL - QSslServer *pSslServer = new QSslServer(); + QSslServer *pSslServer = new QSslServer(q_ptr); m_pTcpServer = pSslServer; if (Q_LIKELY(m_pTcpServer)) { QObjectPrivate::connect(pSslServer, &QSslServer::newEncryptedConnection, @@ -105,8 +105,6 @@ void QWebSocketServerPrivate::init() */ QWebSocketServerPrivate::~QWebSocketServerPrivate() { - close(true); - m_pTcpServer->deleteLater(); } /*! |