fixing a bug where no backlog is requested after an aborted connect
authorMarcus Eggenberger <egs@quassel-irc.org>
Mon, 27 Oct 2008 23:51:23 +0000 (00:51 +0100)
committerMarcus Eggenberger <egs@quassel-irc.org>
Mon, 27 Oct 2008 23:51:23 +0000 (00:51 +0100)
src/client/client.cpp
src/client/clientbacklogmanager.cpp
src/client/clientbacklogmanager.h

index 93c5e21..b0be2a3 100644 (file)
@@ -302,6 +302,7 @@ void Client::disconnectedFromCore() {
   emit disconnected();
   emit coreConnectionStateChanged(false);
 
+  backlogManager()->reset();
   messageProcessor()->reset();
 
   // Clear internal data. Hopefully nothing relies on it at this point.
index 35d46fa..518ac24 100644 (file)
@@ -83,9 +83,7 @@ void ClientBacklogManager::stopBuffering() {
   Q_ASSERT(_requester);
 
   dispatchMessages(_requester->bufferedMessages(), true);
-
-  delete _requester;
-  _requester = 0;
+  reset();
 }
 
 bool ClientBacklogManager::isBuffering() {
@@ -103,3 +101,8 @@ void ClientBacklogManager::dispatchMessages(const MessageList &messages, bool so
 
   emit messagesProcessed(tr("Processed %1 messages in %2 seconds.").arg(msgs.count()).arg((float)(end_t - start_t) / CLOCKS_PER_SEC));
 }
+
+void ClientBacklogManager::reset() {
+  delete _requester;
+  _requester = 0;
+}
index 6d76789..400edcb 100644 (file)
@@ -37,6 +37,8 @@ public:
   // helper for the backlogRequester, as it isn't a QObject and can't emit itself
   inline void emitMessagesRequested(const QString &msg) const { emit messagesRequested(msg); }
 
+  void reset();
+
 public slots:
   virtual void receiveBacklog(BufferId bufferId, int lastMsgs, int offset, QVariantList msgs);
   void requestInitialBacklog();