diff --git a/gajim/common/connection_handlers_events.py b/gajim/common/connection_handlers_events.py index ddc8aacacb8dc7b93f0ec025e8c61328528fb9fd..93a6b9844da0b3f6cd683daef616114b37369073 100644 --- a/gajim/common/connection_handlers_events.py +++ b/gajim/common/connection_handlers_events.py @@ -1127,6 +1127,8 @@ class MamGcMessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent): :stanza: Complete stanza Node :forwarded: Forwarded Node :result: Result Node + :muc_pm: True, if this is a MUC PM + propagated to MamDecryptedMessageReceivedEvent ''' self._set_base_event_vars_as_attributes(base_event) self.additional_data = {} @@ -1207,23 +1209,27 @@ class MamDecryptedMessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent): if self.groupchat: return True - self.is_pm = app.logger.jid_is_room_jid(self.with_.getStripped()) - if self.is_pm is None: - # Check if this event is triggered after a disco, so we dont - # run into an endless loop - if hasattr(self, 'disco'): - log.error('JID not known even after sucessful disco') + if not self.muc_pm: + # muc_pm = False, means only there was no muc#user namespace + # This could still be a muc pm, we check the database if we + # know this jid. If not we disco it. + self.muc_pm = app.logger.jid_is_room_jid(self.with_.getStripped()) + if self.muc_pm is None: + # Check if this event is triggered after a disco, so we dont + # run into an endless loop + if hasattr(self, 'disco'): + log.error('JID not known even after sucessful disco') + return + # we don't know this JID, we need to disco it. + server = self.with_.getDomain() + if server not in self.conn.mam_awaiting_disco_result: + self.conn.mam_awaiting_disco_result[server] = [self] + self.conn.discoverInfo(server) + else: + self.conn.mam_awaiting_disco_result[server].append(self) return - # we don't know this JID, we need to disco it. - server = self.with_.getDomain() - if server not in self.conn.mam_awaiting_disco_result: - self.conn.mam_awaiting_disco_result[server] = [self] - self.conn.discoverInfo(server) - else: - self.conn.mam_awaiting_disco_result[server].append(self) - return - if self.is_pm: + if self.muc_pm: self.with_ = str(self.with_) else: self.with_ = self.with_.getStripped()