diff options
Diffstat (limited to 'client/SslClient.cpp')
-rw-r--r-- | client/SslClient.cpp | 40 |
1 files changed, 36 insertions, 4 deletions
diff --git a/client/SslClient.cpp b/client/SslClient.cpp index d54523c..5a309c4 100644 --- a/client/SslClient.cpp +++ b/client/SslClient.cpp @@ -97,19 +97,51 @@ void SslClient::SendRequest(RequestType type) */ void SslClient::Connected() { - Logger::Info("Connected to server\n"); + Logger::Info("Connected to server %s\n", server.toStdString().c_str()); } void SslClient::Disconnected() { - Logger::Info("Disconnected from server\n"); + Logger::Info("Disconnected from server %s\n", server.toStdString().c_str()); } void SslClient::DataRecieved() { - Logger::Trace("Reply recieved\n"); + Logger::Trace("Recieved reply from %s\n", server.toStdString().c_str()); QByteArray data = sslSocket->readAll(); - qDebug() << data; + + int length = data.size(); + char h1 = data[0]; + char h2 = data[1]; + char t1 = data[length-1]; + char t2 = data[length]; + if ((h1 != 0x13) || (h2 != 0x13) || + (t1 != 0x14) || (t2 != 0x14)) + { + Logger::Error("Invalid data packet recieved!"); + return; + } + + RequestType type; + char rcode = data[2]; + switch (rcode) + { + case 0x01: + case 0x02: + case 0x04: + case 0x08: + type = (RequestType)rcode; + break; + default: + Logger::Error("Invalid reply code: %x\n", rcode); + return; + } + + /* remove header and tail */ + data.remove(0, 3); + data.remove(length-1, 2); + + emit ReplyRecieved(type, data); } void SslClient::Error(QAbstractSocket::SocketError socketError) |