Add flush and abort to each socket close call
This commit is contained in:
parent
bdda8da803
commit
df5a240189
@ -87,6 +87,8 @@ void WebSocketServer::killClientConnection(const QUuid &clientId, const QString
|
|||||||
|
|
||||||
qCWarning(dcWebSocketServer()) << "Killing client connection" << clientId.toString() << "Reason:" << killReason;
|
qCWarning(dcWebSocketServer()) << "Killing client connection" << clientId.toString() << "Reason:" << killReason;
|
||||||
client->close(QWebSocketProtocol::CloseCodeBadOperation, killReason);
|
client->close(QWebSocketProtocol::CloseCodeBadOperation, killReason);
|
||||||
|
client->flush();
|
||||||
|
client->abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebSocketServer::onClientConnected()
|
void WebSocketServer::onClientConnected()
|
||||||
@ -102,6 +104,8 @@ void WebSocketServer::onClientConnected()
|
|||||||
if (client->version() != QWebSocketProtocol::Version13) {
|
if (client->version() != QWebSocketProtocol::Version13) {
|
||||||
qCWarning(dcWebSocketServer()) << "Client with invalid protocol version" << client->version() << ". Rejecting.";
|
qCWarning(dcWebSocketServer()) << "Client with invalid protocol version" << client->version() << ". Rejecting.";
|
||||||
client->close(QWebSocketProtocol::CloseCodeProtocolError, QString("invalid protocol version: %1 != Supported Version 13").arg(client->version()));
|
client->close(QWebSocketProtocol::CloseCodeProtocolError, QString("invalid protocol version: %1 != Supported Version 13").arg(client->version()));
|
||||||
|
client->flush();
|
||||||
|
client->abort();
|
||||||
delete client;
|
delete client;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -130,6 +134,8 @@ void WebSocketServer::onClientDisconnected()
|
|||||||
|
|
||||||
// Manually close it in any case
|
// Manually close it in any case
|
||||||
client->close();
|
client->close();
|
||||||
|
client->flush();
|
||||||
|
client->abort();
|
||||||
|
|
||||||
m_clientList.take(clientId)->deleteLater();
|
m_clientList.take(clientId)->deleteLater();
|
||||||
emit clientDisconnected(clientId);
|
emit clientDisconnected(clientId);
|
||||||
@ -148,6 +154,8 @@ void WebSocketServer::onBinaryMessageReceived(const QByteArray &data)
|
|||||||
qCWarning(dcWebSocketServerTraffic()) << "<-- Binary message from" << client->peerAddress().toString() << ":" << data;
|
qCWarning(dcWebSocketServerTraffic()) << "<-- Binary message from" << client->peerAddress().toString() << ":" << data;
|
||||||
// Note: this is not expected, so close this client connection.
|
// Note: this is not expected, so close this client connection.
|
||||||
client->close(QWebSocketProtocol::CloseCodeBadOperation, "Binary message not expected.");
|
client->close(QWebSocketProtocol::CloseCodeBadOperation, "Binary message not expected.");
|
||||||
|
client->flush();
|
||||||
|
client->abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebSocketServer::onClientError(QAbstractSocket::SocketError error)
|
void WebSocketServer::onClientError(QAbstractSocket::SocketError error)
|
||||||
@ -157,6 +165,8 @@ void WebSocketServer::onClientError(QAbstractSocket::SocketError error)
|
|||||||
|
|
||||||
// Note: on any error which can occure, make sure the socket will be closed in any case
|
// Note: on any error which can occure, make sure the socket will be closed in any case
|
||||||
client->close();
|
client->close();
|
||||||
|
client->flush();
|
||||||
|
client->abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebSocketServer::onAcceptError(QAbstractSocket::SocketError error)
|
void WebSocketServer::onAcceptError(QAbstractSocket::SocketError error)
|
||||||
@ -195,6 +205,8 @@ bool WebSocketServer::stopServer()
|
|||||||
// Clean up client connections
|
// Clean up client connections
|
||||||
foreach (QWebSocket *client, m_clientList.values()) {
|
foreach (QWebSocket *client, m_clientList.values()) {
|
||||||
client->close(QWebSocketProtocol::CloseCodeNormal, "Stop server");
|
client->close(QWebSocketProtocol::CloseCodeNormal, "Stop server");
|
||||||
|
client->flush();
|
||||||
|
client->abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Delete the server object
|
// Delete the server object
|
||||||
|
|||||||
Reference in New Issue
Block a user