From 83f10691557953e9d164df36a12f8a0fd7d33dc4 Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 3 Nov 2011 19:01:35 +0200 Subject: Handle server reply (SslClient not tested) --- client/SslClient.cpp | 40 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 4 deletions(-) (limited to 'client/SslClient.cpp') 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) -- cgit v1.2.3