From 5fd0e076bd4afb72f29c11e1b9c6109010f507a0 Mon Sep 17 00:00:00 2001
From: Denis Fomin <fominde@gmail.com>
Date: Tue, 29 Mar 2011 17:18:50 +0400
Subject: [PATCH] Prevent join groupchat (using local account). Fixes #6849

---
 src/dialogs.py           |  4 ++++
 src/gajim-remote.py      |  3 ++-
 src/groupchat_control.py |  4 ++--
 src/remote_control.py    | 10 ++++++++--
 4 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/src/dialogs.py b/src/dialogs.py
index d1ee2ca00e..8ce8e26165 100644
--- a/src/dialogs.py
+++ b/src/dialogs.py
@@ -2466,6 +2466,10 @@ class JoinGroupchatWindow:
 
         if self.automatic:
             gajim.automatic_rooms[self.account][room_jid] = self.automatic
+        if gajim.connections[self.account].is_zeroconf:
+            ErrorDialog(_('Impossible join groupchat'),
+                    _('local account does not support groupchats.'))
+            return
         gajim.interface.join_gc_room(self.account, room_jid, nickname,  password)
 
         self.window.destroy()
diff --git a/src/gajim-remote.py b/src/gajim-remote.py
index 96895561ea..1688857685 100644
--- a/src/gajim-remote.py
+++ b/src/gajim-remote.py
@@ -339,7 +339,8 @@ class GajimRemote:
         Print retrieved result to the output
         """
         if res is not None:
-            if self.command in ('open_chat', 'send_chat_message', 'send_single_message', 'start_chat'):
+            if self.command in ('open_chat', 'send_chat_message',
+            'send_single_message', 'start_chat'):
                 if self.command in ('send_message', 'send_single_message'):
                     self.argv_len -= 2
 
diff --git a/src/groupchat_control.py b/src/groupchat_control.py
index bbd18cb4c3..f5a6465581 100644
--- a/src/groupchat_control.py
+++ b/src/groupchat_control.py
@@ -1897,8 +1897,8 @@ class GroupchatControl(ChatControlBase):
             # logs. We do it only when connected because if connection was lost
             # there may be new messages since disconnection.
             gajim.connections[self.account].gc_got_disconnected(self.room_jid)
-        gajim.connections[self.account].send_gc_status(self.nick, self.room_jid,
-                                                show='offline', status=status)
+            gajim.connections[self.account].send_gc_status(self.nick,
+                self.room_jid, show='offline', status=status)
         nick_list = gajim.contacts.get_nick_list(self.account, self.room_jid)
         for nick in nick_list:
             # Update pm chat window
diff --git a/src/remote_control.py b/src/remote_control.py
index 4dfe18f604..7f47b94c30 100644
--- a/src/remote_control.py
+++ b/src/remote_control.py
@@ -901,10 +901,16 @@ class SignalObject(dbus.service.Object):
             accounts = gajim.connections.keys()
             for acct in accounts:
                 if gajim.account_is_connected(acct):
-                    account = acct
-                    break
+                    if not gajim.connections[acct].is_zeroconf:
+                        account = acct
+                        break
             if not account:
                 return
+
+        if gajim.connections[account].is_zeroconf:
+            # zeroconf not support groupchats
+            return
+
         if not nick:
             nick = ''
             gajim.interface.instances[account]['join_gc'] = \
-- 
GitLab