summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core.py14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/core.py b/src/core.py
index 40661e89..a77868cb 100644
--- a/src/core.py
+++ b/src/core.py
@@ -1684,7 +1684,12 @@ class Core(object):
room = safeJID(tab.get_name()).bare
nick = tab.own_nick
else:
- info = safeJID(args[0])
+ if args[0].startswith('@'): # we try to join a server directly
+ server_root = True
+ info = safeJID(args[0][1:])
+ else:
+ info = safeJID(args[0])
+ server_root = False
if info == '' and len(args[0]) > 1 and args[0][0] == '/':
nick = args[0][1:]
elif info.resource == '':
@@ -1703,15 +1708,14 @@ class Core(object):
nick = tab.own_nick
else:
room = info.bare
- if room.find('@') == -1: # no server is provided, like "/join hello"
+ if room.find('@') == -1 and not server_root: # no server is provided, like "/join hello"
# use the server of the current room if available
# check if the current room's name has a server
if isinstance(self.current_tab(), tabs.MucTab) and\
self.current_tab().get_name().find('@') != -1:
room += '@%s' % safeJID(self.current_tab().get_name()).domain
- else: # no server could be found, print a message and return
- self.information(_("You didn't specify a server for the room you want to join"), 'Error')
- return
+ else:
+ room = args[0]
room = room.lower()
if room in self.pending_invites:
del self.pending_invites[room]