src/main/java/eu/siacs/conversations/services/XmppConnectionService.java 🔗
@@ -1249,14 +1249,14 @@ public class XmppConnectionService extends Service {
                         lowTimeout ? Config.LOW_PING_TIMEOUT : Config.PING_TIMEOUT,
                         account.getUuid().hashCode());
             }
-            long msToMucPing = (mLastMucPing + (Config.PING_MAX_INTERVAL * 2000L)) - SystemClock.elapsedRealtime();
-            if (msToMucPing <= 0) {
-                Log.d(Config.LOGTAG, "ping MUCs");
-                mLastMucPing = SystemClock.elapsedRealtime();
-                for (Conversation c : getConversations()) {
-                    if (c.getMode() == Conversation.MODE_MULTI && (c.getMucOptions().online() || c.getMucOptions().getError() == MucOptions.Error.SHUTDOWN)) {
-                        mucSelfPingAndRejoin(c);
-                    }
+        }
+        long msToMucPing = (mLastMucPing + (Config.PING_MAX_INTERVAL * 2000L)) - SystemClock.elapsedRealtime();
+        if (pingNow || ("ui".equals(action) && msToMucPing <= 0) || msToMucPing < -300000) {
+            Log.d(Config.LOGTAG, "ping MUCs");
+            mLastMucPing = SystemClock.elapsedRealtime();
+            for (Conversation c : getConversations()) {
+                if (c.getMode() == Conversation.MODE_MULTI && (c.getMucOptions().online() || c.getMucOptions().getError() == MucOptions.Error.SHUTDOWN)) {
+                    mucSelfPingAndRejoin(c);
                 }
             }
         }