[Libreoffice-commits] online.git: kit/Kit.cpp net/WebSocketHandler.hpp

Gabriel Masei (via logerrit) logerrit at kemper.freedesktop.org
Sat Jul 25 19:23:09 UTC 2020


 kit/Kit.cpp              |   12 ++++++++++--
 net/WebSocketHandler.hpp |    2 +-
 2 files changed, 11 insertions(+), 3 deletions(-)

New commits:
commit d458f35c1f17f74dfa17558b74b74ab5d9c3edeb
Author:     Gabriel Masei <gabriel.masei at 1and1.ro>
AuthorDate: Fri Jul 24 19:50:43 2020 +0300
Commit:     Gabriel Masei <gabriel.masei at 1and1.ro>
CommitDate: Sat Jul 25 21:22:50 2020 +0200

    kit: disable parallel processing at higher levels
    
    Sometimes multiple messages are processed in a single iteration
    at socket level. This happens in WebSocketHandler and when draining
    Document queue.Just covered these cases.
    
    Change-Id: Ifa46f5d484b67015cca64008b2c89426cc839e64
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/99387
    Tested-by: Jenkins
    Tested-by: Gabriel Masei <gabriel.masei at 1and1.ro>
    Reviewed-by: Michael Meeks <michael.meeks at collabora.com>
    Reviewed-by: Gabriel Masei <gabriel.masei at 1and1.ro>

diff --git a/kit/Kit.cpp b/kit/Kit.cpp
index 3ca92b01b..2ad1c545a 100644
--- a/kit/Kit.cpp
+++ b/kit/Kit.cpp
@@ -455,7 +455,8 @@ public:
         _isLoading(0),
         _editorId(-1),
         _editorChangeWarning(false),
-        _mobileAppDocId(mobileAppDocId)
+        _mobileAppDocId(mobileAppDocId),
+        _inputProcessingEnabled(true)
     {
         LOG_INF("Document ctor for [" << _docKey <<
                 "] url [" << anonymizeUrl(_url) << "] on child [" << _jailId <<
@@ -1388,6 +1389,9 @@ private:
     }
 
 public:
+    void enableProcessInput(bool enable = true){ _inputProcessingEnabled = enable; }
+    bool processInputEnabled() { return _inputProcessingEnabled; }
+
     bool hasQueueItems() const
     {
         return _tileQueue && !_tileQueue->isEmpty();
@@ -1397,7 +1401,7 @@ public:
     {
         try
         {
-            while (hasQueueItems())
+            while (processInputEnabled() && hasQueueItems())
             {
                 if (_stop || SigUtil::getTerminationFlag())
                 {
@@ -1640,6 +1644,7 @@ private:
 #endif
 
     const unsigned _mobileAppDocId;
+    bool _inputProcessingEnabled;
 };
 
 #ifdef __ANDROID__
@@ -1942,6 +1947,9 @@ protected:
     virtual void enableProcessInput(bool enable = true) override
     {
         WebSocketHandler::enableProcessInput(enable);
+        if (_document)
+            _document->enableProcessInput(enable);
+
         // Wake up poll to process data from socket input buffer
         if (enable && _ksPoll)
         {
diff --git a/net/WebSocketHandler.hpp b/net/WebSocketHandler.hpp
index 615400798..9cab57118 100644
--- a/net/WebSocketHandler.hpp
+++ b/net/WebSocketHandler.hpp
@@ -422,7 +422,7 @@ public:
 #endif
         else
         {
-            while (handleTCPStream(socket))
+            while (socket->processInputEnabled() && handleTCPStream(socket))
                 ; // might have multiple messages in the accumulated buffer.
         }
     }


More information about the Libreoffice-commits mailing list