diff --git a/src/session.py b/src/session.py
index c9cdde654ec8b21fdcbbd33178206ed4f51e7149..a49d16be2ef4049adf8af742c01e638458bac43b 100644
--- a/src/session.py
+++ b/src/session.py
@@ -180,6 +180,20 @@ class ChatControlSession(stanza_session.EncryptedStanzaSession):
 																							jid_of_control, [msg_type]):
 			first = True
 
+		if not self.control:
+			# look for an existing chat control without a session
+			mw = gajim.interface.msg_win_mgr.get_window(jid, self.conn.name)
+
+			if mw:
+				ctrls = mw.sessionless_controls(self.conn.name, jid)
+
+				if len(ctrls):
+					ctrl = ctrls[0]
+					self.control = ctrl
+					ctrl.set_session(self)
+					ctrl.parent_win.move_from_sessionless(ctrl)
+					first = False
+
 		if pm:
 			nickname = resource
 			groupchat_control.on_private_message(nickname, msgtxt, tim,
@@ -255,19 +269,6 @@ class ChatControlSession(stanza_session.EncryptedStanzaSession):
 			contact = gajim.interface.roster.add_to_not_in_the_roster(
 				self.conn.name, jid, user_nick)
 
-		if not self.control:
-			# look for an existing chat control without a session
-			mw = gajim.interface.msg_win_mgr.get_window(jid, self.conn.name)
-
-			if mw:
-				ctrls = mw.sessionless_controls(self.conn.name, jid)
-
-				if len(ctrls):
-					ctrl = ctrls[0]
-					self.control = ctrl
-					ctrl.set_session(self)
-					ctrl.parent_win.move_from_sessionless(ctrl)
-
 		if not self.control:
 			# if no control exists and message comes from highest prio, the new
 			# control shouldn't have a resource