Commit 64927e04 authored by Peter Kümmel's avatar Peter Kümmel
Browse files

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: default avatarLiang Qi <liang.qi@theqtcompany.com>
Reviewed-by: default avatarAlex Blasche <alexander.blasche@theqtcompany.com>
parent 44a07139
Branches
Tags
No related merge requests found
Showing with 4 additions and 4 deletions
...@@ -247,6 +247,8 @@ QWebSocketServer::QWebSocketServer(const QString &serverName, SslMode secureMode ...@@ -247,6 +247,8 @@ QWebSocketServer::QWebSocketServer(const QString &serverName, SslMode secureMode
*/ */
QWebSocketServer::~QWebSocketServer() QWebSocketServer::~QWebSocketServer()
{ {
Q_D(QWebSocketServer);
d->close(true);
} }
/*! /*!
......
...@@ -74,7 +74,7 @@ QWebSocketServerPrivate::QWebSocketServerPrivate(const QString &serverName, ...@@ -74,7 +74,7 @@ QWebSocketServerPrivate::QWebSocketServerPrivate(const QString &serverName,
void QWebSocketServerPrivate::init() void QWebSocketServerPrivate::init()
{ {
if (m_secureMode == NonSecureMode) { if (m_secureMode == NonSecureMode) {
m_pTcpServer = new QTcpServer(); m_pTcpServer = new QTcpServer(q_ptr);
if (Q_LIKELY(m_pTcpServer)) if (Q_LIKELY(m_pTcpServer))
QObjectPrivate::connect(m_pTcpServer, &QTcpServer::newConnection, QObjectPrivate::connect(m_pTcpServer, &QTcpServer::newConnection,
this, &QWebSocketServerPrivate::onNewConnection); this, &QWebSocketServerPrivate::onNewConnection);
...@@ -82,7 +82,7 @@ void QWebSocketServerPrivate::init() ...@@ -82,7 +82,7 @@ void QWebSocketServerPrivate::init()
qFatal("Could not allocate memory for tcp server."); qFatal("Could not allocate memory for tcp server.");
} else { } else {
#ifndef QT_NO_SSL #ifndef QT_NO_SSL
QSslServer *pSslServer = new QSslServer(); QSslServer *pSslServer = new QSslServer(q_ptr);
m_pTcpServer = pSslServer; m_pTcpServer = pSslServer;
if (Q_LIKELY(m_pTcpServer)) { if (Q_LIKELY(m_pTcpServer)) {
QObjectPrivate::connect(pSslServer, &QSslServer::newEncryptedConnection, QObjectPrivate::connect(pSslServer, &QSslServer::newEncryptedConnection,
...@@ -105,8 +105,6 @@ void QWebSocketServerPrivate::init() ...@@ -105,8 +105,6 @@ void QWebSocketServerPrivate::init()
*/ */
QWebSocketServerPrivate::~QWebSocketServerPrivate() QWebSocketServerPrivate::~QWebSocketServerPrivate()
{ {
close(true);
m_pTcpServer->deleteLater();
} }
/*! /*!
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment