diff options
author | sr | 2013-02-06 19:21:04 +0100 |
---|---|---|
committer | sr | 2013-02-06 19:21:04 +0100 |
commit | 49f3903f316ab7363b4543615d3231e1407a67ab (patch) | |
tree | 9f6ec082403f388c0e791de68b1743000a12bc49 /src/server/net | |
parent | ... (diff) | |
download | pvs2-49f3903f316ab7363b4543615d3231e1407a67ab.tar.gz pvs2-49f3903f316ab7363b4543615d3231e1407a67ab.tar.xz pvs2-49f3903f316ab7363b4543615d3231e1407a67ab.zip |
[SERVER] Add "stop projection" button
[SERVER] Don't show error message when VNC server stops as expected
[SERVER/CLIENT] Implement connection timeout of 15 seconds
Diffstat (limited to 'src/server/net')
-rw-r--r-- | src/server/net/client.cpp | 16 | ||||
-rw-r--r-- | src/server/net/client.h | 2 |
2 files changed, 14 insertions, 4 deletions
diff --git a/src/server/net/client.cpp b/src/server/net/client.cpp index d6002a6..3adeeaa 100644 --- a/src/server/net/client.cpp +++ b/src/server/net/client.cpp @@ -24,7 +24,6 @@ Client::Client(QSslSocket* socket) : { assert(socket != NULL); _id = ++_clientIdCounter; - _pingTimeout = QDateTime::currentMSecsSinceEpoch() + PING_TIMEOUT_MS; _ip = _socket->peerAddress().toString(); qDebug("*** Client %s created.", qPrintable(_ip)); // Connect important signals @@ -42,6 +41,8 @@ Client::Client(QSslSocket* socket) : _toClient.writeMessage(_socket); // give client 3 seconds to complete handshake _timerIdAuthTimeout = startTimer(3000); + _timerPingTimeout = startTimer(5000); + _pingTimeout = QDateTime::currentMSecsSinceEpoch() + PING_TIMEOUT_MS; } Client::~Client() @@ -56,7 +57,16 @@ Client::~Client() void Client::timerEvent(QTimerEvent* event) { - if (event->timerId() == _timerIdAuthTimeout) + if (event->timerId() == _timerPingTimeout) + { + if (_pingTimeout < QDateTime::currentMSecsSinceEpoch()) + { + qDebug() << "Client" << _ip << "has a ping timeout."; + killTimer(_timerPingTimeout); + this->disconnect(); + } + } + else if (event->timerId() == _timerIdAuthTimeout) { // Client did not send login request within 3 seconds killTimer(_timerIdAuthTimeout); @@ -108,7 +118,6 @@ void Client::requestThumb(const int width, const int height) void Client::onDataArrival() { - _pingTimeout = QDateTime::currentMSecsSinceEpoch() + PING_TIMEOUT_MS; // if (_socket == NULL || _socket->state() != QAbstractSocket::ConnectedState) { @@ -153,6 +162,7 @@ void Client::onError(QAbstractSocket::SocketError errcode) void Client::handleMsg() { + _pingTimeout = QDateTime::currentMSecsSinceEpoch() + PING_TIMEOUT_MS; const QString &id = _fromClient.getFieldString(_ID); if (id.isEmpty()) { diff --git a/src/server/net/client.h b/src/server/net/client.h index ce17c18..32ce69f 100644 --- a/src/server/net/client.h +++ b/src/server/net/client.h @@ -31,7 +31,7 @@ private: QByteArray _challenge; qint64 _pingTimeout; NetworkMessage _toClient, _fromClient; - int _timerIdAuthTimeout, _timerDelete; + int _timerIdAuthTimeout, _timerDelete, _timerPingTimeout; int _id; // this client's unique id |