loolwsd/MasterProcessSession.cpp |    6 ++++++
 loolwsd/TileCache.cpp            |    9 +++++++++
 2 files changed, 15 insertions(+)

New commits:
commit 60ffc8aa6b6d94ab694981789d19624ebeb1e5c3
Author: Michael Meeks <michael.me...@collabora.com>
Date:   Fri Apr 22 07:58:31 2016 +0100

    Avoid tile subscription loop, and elide redundant tile subscriptions.

diff --git a/loolwsd/MasterProcessSession.cpp b/loolwsd/MasterProcessSession.cpp
index 99f143e..dd1bdc4 100644
--- a/loolwsd/MasterProcessSession.cpp
+++ b/loolwsd/MasterProcessSession.cpp
@@ -204,6 +204,12 @@ bool MasterProcessSession::_handleInput(const char 
*buffer, int length)
                         auto subscriber = i.lock();
                         if (subscriber)
                         {
+                            if (subscriber.get() == this)
+                            {
+                                Log::debug("Refusing to queue new tile message 
for ourselves");
+                                continue;
+                            }
+
                             Log::debug("Sending tile message also to 
subscriber " + subscriber->getName() + " line: '" + firstLine + "'");
                             std::shared_ptr<BasicTileQueue> queue;
                             queue = subscriber->getQueue();
diff --git a/loolwsd/TileCache.cpp b/loolwsd/TileCache.cpp
index f05ffa6..4847135 100644
--- a/loolwsd/TileCache.cpp
+++ b/loolwsd/TileCache.cpp
@@ -46,6 +46,15 @@ using namespace LOOLProtocol;
 
 void TileBeingRendered::subscribe(const std::weak_ptr<MasterProcessSession>& 
session)
 {
+    std::shared_ptr<MasterProcessSession> cmp = session.lock();
+    for (auto s : _subscribers)
+    {
+        if (s.lock().get() == cmp.get())
+        {
+            Log::debug("Redundant request to re-subscribe on a tile");
+            return;
+        }
+    }
     _subscribers.push_back(session);
 }
 
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to