diff options
Diffstat (limited to 'client/SslClient.cpp')
-rw-r--r-- | client/SslClient.cpp | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/client/SslClient.cpp b/client/SslClient.cpp index e13a028..3909210 100644 --- a/client/SslClient.cpp +++ b/client/SslClient.cpp @@ -13,6 +13,7 @@ SslClient::SslClient(): port(13666) SslClient::SslClient(QString addr): port(13666) { server = addr; + _currentRequest = Unknown; /* read certificates */ QFile ca_cert_file(":/ca.crt"); @@ -74,8 +75,8 @@ void SslClient::SendRequest(RequestType type) if (sslSocket.state() != QAbstractSocket::ConnectedState) { Logger::Trace("Connecting to server %s:%u\n", server.toLocal8Bit().data(), port); + _currentRequest = type; sslSocket.connectToHostEncrypted(server, port); - sslSocket.waitForEncrypted(-1); } else { @@ -101,6 +102,7 @@ void SslClient::SendRequest(RequestType type) char data[5] = {0x13, 0x13, rcode, 0x14, 0x14}; QByteArray pkt(data); sslSocket.write(pkt); + _currentRequest = Unknown; } void SslClient::SendFileRequest(string filename) @@ -109,8 +111,9 @@ void SslClient::SendFileRequest(string filename) if (sslSocket.state() != QAbstractSocket::ConnectedState) { Logger::Trace("Connecting to server %s:%u\n", server.toLocal8Bit().data(), port); + _currentFile = filename; + _currentRequest = RegularFile; sslSocket.connectToHostEncrypted(server, port); - sslSocket.waitForEncrypted(-1); } else { @@ -128,6 +131,7 @@ void SslClient::SendFileRequest(string filename) data[pkt_size - 1] = data[pkt_size - 2] = 0x14; QByteArray pkt(data); sslSocket.write(pkt); + _currentRequest = Unknown; } @@ -137,6 +141,17 @@ void SslClient::SendFileRequest(string filename) void SslClient::Connected() { Logger::Info("Connected to server %s\n", server.toStdString().c_str()); + if (_currentRequest != Unknown) + { + if (_currentRequest == RegularFile) + { + SendFileRequest(_currentFile); + } + else + { + SendRequest(_currentRequest); + } + } } void SslClient::Disconnected() |