diff --git a/src/websockets/qwebsocketserver_p.cpp b/src/websockets/qwebsocketserver_p.cpp index 91bfafcd34adc0b41c5a945d6cdb80a6c490b85b..3bf6d680f9066d53680f3aaa36426d3a857646a3 100644 --- a/src/websockets/qwebsocketserver_p.cpp +++ b/src/websockets/qwebsocketserver_p.cpp @@ -392,18 +392,20 @@ void QWebSocketServerPrivate::onNewConnection() QObjectPrivate::connect(pTcpSocket, &QTcpSocket::readyRead, this, &QWebSocketServerPrivate::handshakeReceived, Qt::QueuedConnection); + QObjectPrivate::connect(pTcpSocket, &QTcpSocket::disconnected, + this, &QWebSocketServerPrivate::onSocketDisconnected); } } /*! \internal */ -void QWebSocketServerPrivate::onCloseConnection() +void QWebSocketServerPrivate::onSocketDisconnected() { if (Q_LIKELY(currentSender)) { QTcpSocket *pTcpSocket = qobject_cast<QTcpSocket*>(currentSender->sender); if (Q_LIKELY(pTcpSocket)) - pTcpSocket->close(); + pTcpSocket->deleteLater(); } } diff --git a/src/websockets/qwebsocketserver_p.h b/src/websockets/qwebsocketserver_p.h index 46a21566ccbbfd56e7ea09295eac9716d7fdf4f6..6aabebdfdf6cfc521a3a8a671d78660949e8a1f6 100644 --- a/src/websockets/qwebsocketserver_p.h +++ b/src/websockets/qwebsocketserver_p.h @@ -136,7 +136,7 @@ private: const QString &errorDescription); void onNewConnection(); - void onCloseConnection(); + void onSocketDisconnected(); void handshakeReceived(); };