Committing my current state just in case. Mostly work on qtopia, nothing special
[quassel.git] / src / client / client.cpp
index 2b8e96e..7b715bd 100644 (file)
@@ -99,7 +99,6 @@ void Client::init() {
   layoutTimer->setInterval(0);
   layoutTimer->setSingleShot(false);
   connect(layoutTimer, SIGNAL(timeout()), this, SLOT(layoutMsg()));
-
 }
 
 Client::~Client() {
@@ -122,10 +121,11 @@ bool Client::isConnected() {
 void Client::connectToCore(const QVariantMap &conn) {
   // TODO implement SSL
   coreConnectionInfo = conn;
-  if(isConnected() || socket != 0) {
+  if(isConnected()) {
     emit coreConnectionError(tr("Already connected to Core!"));
     return;
   }
+  if(socket != 0) socket->deleteLater();
   if(conn["Host"].toString().isEmpty()) {
     clientMode = LocalCore;
     socket = new QBuffer(this);
@@ -177,6 +177,7 @@ void Client::coreSocketDisconnected() {
   connectedToCore = false;
   emit disconnected();
   socket->deleteLater();
+  blockSize = 0;
 
   /* Clear internal data. Hopefully nothing relies on it at this point. */
   _bufferModel->clear();
@@ -195,7 +196,7 @@ void Client::coreSocketDisconnected() {
   layoutTimer->stop();
 }
 
-void Client::coreSocketStateChanged(QAbstractSocket::SocketState state) { qDebug() << state;
+void Client::coreSocketStateChanged(QAbstractSocket::SocketState state) {
   if(state == QAbstractSocket::UnconnectedState) coreSocketDisconnected();
 }
 
@@ -206,6 +207,7 @@ void Client::recvCoreState(const QVariant &state) {
   syncToCore(state);
 }
 
+// TODO: auth errors
 void Client::syncToCore(const QVariant &coreState) {
   if(!coreState.toMap().contains("SessionState")) {
     emit coreConnectionError(tr("Invalid data received from core!"));
@@ -262,6 +264,7 @@ QStringList Client::sessionDataKeys() {
 
 void Client::coreSocketError(QAbstractSocket::SocketError) {
   emit coreConnectionError(socket->errorString());
+  socket->deleteLater();
 }
 
 void Client::coreHasData() {