summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex <b0ris@b0ris-satellite.localdomain>2011-11-05 02:45:53 +0200
committerAlex <b0ris@b0ris-satellite.localdomain>2011-11-05 02:45:53 +0200
commit2f71a1e82c20f4322ea0fb2994da251de58b366f (patch)
tree3686abb1ed4f1c06613a49a15b563e08aef1bc64
parent6f9a82364b5480ac7b0056b3563776bacf605f62 (diff)
Fix segfault in SslClient
-rw-r--r--client/Config.cpp2
-rw-r--r--client/SslClient.cpp35
-rw-r--r--client/SslClient.h4
3 files changed, 20 insertions, 21 deletions
diff --git a/client/Config.cpp b/client/Config.cpp
index 7e617a3..ee8b9da 100644
--- a/client/Config.cpp
+++ b/client/Config.cpp
@@ -97,10 +97,8 @@ Config::Config(): QObject(), StaticProxySpeedLow(50)
this, SLOT(updateConfig()));
client = new SslClient(servers[0].host);
- /*
connect(client, SIGNAL(ReplyRecieved(SslClient::RequestType&, QByteArray&)),
this, SLOT(gotServerReply(SslClient::RequestType&, QByteArray&)));
- */
client->SendRequest(SslClient::Config);
}
diff --git a/client/SslClient.cpp b/client/SslClient.cpp
index 70d32a7..86449f4 100644
--- a/client/SslClient.cpp
+++ b/client/SslClient.cpp
@@ -39,25 +39,25 @@ SslClient::SslClient(char* addr): port(13666)
QSslCertificate cert(cert_arr);
/* create ssl socket */
- sslSocket = new QSslSocket;
- sslSocket->setLocalCertificate(cert);
- sslSocket->setPrivateKey(key);
- sslSocket->setCaCertificates(ca_certs);
- sslSocket->setPeerVerifyMode(QSslSocket::VerifyPeer);
- sslSocket->setProtocol(QSsl::SslV3);
+ //sslSocket = new QSslSocket;
+ sslSocket.setLocalCertificate(cert);
+ sslSocket.setPrivateKey(key);
+ sslSocket.setCaCertificates(ca_certs);
+ sslSocket.setPeerVerifyMode(QSslSocket::VerifyPeer);
+ sslSocket.setProtocol(QSsl::SslV3);
/* setup signal handlers */
- connect(sslSocket, SIGNAL(encrypted()),
+ connect(&sslSocket, SIGNAL(encrypted()),
this, SLOT(Connected()));
- connect(sslSocket, SIGNAL(disconnected()),
+ connect(&sslSocket, SIGNAL(disconnected()),
this, SLOT(Disconnected()));
- connect(sslSocket, SIGNAL(readyRead()),
+ connect(&sslSocket, SIGNAL(readyRead()),
this, SLOT(DataRecieved()));
- connect(sslSocket, SIGNAL(error(QAbstractSocket::SocketError)),
+ connect(&sslSocket, SIGNAL(error(QAbstractSocket::SocketError)),
this, SLOT(Error(QAbstractSocket::SocketError)));
- connect(sslSocket, SIGNAL(peerVerifyError(const QSslError &)),
+ connect(&sslSocket, SIGNAL(peerVerifyError(const QSslError &)),
this, SLOT(PeerVerifyError(const QSslError)));
- connect(sslSocket, SIGNAL(sslErrors(const QList<QSslError> &)),
+ connect(&sslSocket, SIGNAL(sslErrors(const QList<QSslError> &)),
this, SLOT(SslErrors(const QList<QSslError> &)));
}
@@ -68,8 +68,9 @@ void SslClient::SetServerAddr(char* addr)
void SslClient::SendRequest(RequestType type)
{
- if (sslSocket->state() != QAbstractSocket::ConnectedState)
- sslSocket->connectToHostEncrypted(server, port);
+ Logger::Trace("Sending request w code %x\n", type);
+ if (sslSocket.state() != QAbstractSocket::ConnectedState)
+ sslSocket.connectToHostEncrypted(server, port);
unsigned char rcode = 0x00;
switch (type)
@@ -87,7 +88,7 @@ void SslClient::SendRequest(RequestType type)
char data[5] = {0x13, 0x13, rcode, 0x14, 0x14};
QByteArray pkt(data);
- sslSocket->write(pkt);
+ sslSocket.write(pkt);
}
/*
@@ -106,7 +107,7 @@ void SslClient::Disconnected()
void SslClient::DataRecieved()
{
Logger::Trace("Recieved reply from %s\n", server.toStdString().c_str());
- QByteArray data = sslSocket->readAll();
+ QByteArray data = sslSocket.readAll();
int length = data.size();
char h1 = data[0];
@@ -158,7 +159,7 @@ void SslClient::PeerVerifyError(const QSslError &error)
Logger::Fatal("Critical peer verify error!, Aborting connection\n"
"Error description: %s",
error.errorString().toStdString().c_str());
- sslSocket->abort();
+ sslSocket.abort();
break;
default:
Logger::Fatal("Can't verify peer: %s", error.errorString().toStdString().c_str());
diff --git a/client/SslClient.h b/client/SslClient.h
index 3a00de5..030c335 100644
--- a/client/SslClient.h
+++ b/client/SslClient.h
@@ -4,12 +4,12 @@
#include <QAbstractSocket>
#include <QObject>
+#include <QSslSocket>
#include "client.h"
using std::string;
class QByteArray;
-class QSslSocket;
class QSslError;
class QString;
@@ -97,7 +97,7 @@ private slots:
void PeerVerifyError(const QSslError &error);
void SslErrors(const QList<QSslError> &errors);
private:
- QSslSocket *sslSocket;
+ QSslSocket sslSocket;
QString server;
unsigned short port;
};