diff options
author | Alex <b0ris@b0ris-satellite.localdomain> | 2011-11-03 19:01:35 +0200 |
---|---|---|
committer | Alex <b0ris@b0ris-satellite.localdomain> | 2011-11-03 19:01:35 +0200 |
commit | 83f10691557953e9d164df36a12f8a0fd7d33dc4 (patch) | |
tree | de9b10b11f0528719a28f7d42502785f12ed42ed /client/SslClient.cpp | |
parent | da3277b21e4a947691df84eb35f675c6f06a4369 (diff) |
Handle server reply (SslClient not tested)
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) |