diff options
author | Alex Borisov <b0ric.alex@gmail.com> | 2012-02-02 00:33:44 +0200 |
---|---|---|
committer | Alex Borisov <b0ric.alex@gmail.com> | 2012-02-02 00:33:44 +0200 |
commit | 873642c0d898f3152b251a783bf4cdef47070d4c (patch) | |
tree | f271bf4f62122f21dd32c27fb62d80f60bc0c54c /client/SslClient.cpp | |
parent | f381a83786d233ca183f3d45f892c4f064a77a58 (diff) |
FIX: implement async connection requests
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() |