improved debugging facilities for the bufferview overlay
[quassel.git] / src / client / clientbacklogmanager.cpp
index 7753842..476fa10 100644 (file)
@@ -77,7 +77,7 @@ void ClientBacklogManager::receiveBacklogAll(MsgId first, MsgId last, int limit,
 }
 
 void ClientBacklogManager::requestInitialBacklog() {
-  if(_requester) {
+  if(_requester && !_buffersRequested.isEmpty()) {
     qWarning() << "ClientBacklogManager::requestInitialBacklog() called twice in the same session! (Backlog has already been requested)";
     return;
   }
@@ -103,9 +103,11 @@ void ClientBacklogManager::requestInitialBacklog() {
 
 BufferIdList ClientBacklogManager::filterNewBufferIds(const BufferIdList &bufferIds) {
   BufferIdList newBuffers;
+  QSet<BufferId> availableBuffers = Client::networkModel()->allBufferIds().toSet();
   foreach(BufferId bufferId, bufferIds) {
-    if(!_buffersRequested.contains(bufferId))
-      newBuffers << bufferId;
+    if(_buffersRequested.contains(bufferId) || !availableBuffers.contains(bufferId))
+      continue;
+    newBuffers << bufferId;
   }
   return newBuffers;
 }