# HG changeset patch # User Goffi # Date 1546450110 -3600 # Node ID df2bc2e704bcdf020508786dff55418327dbfdf7 # Parent ba74914277cf3f165c12c2d19ba723c8fb543043 core (xmpp): don't send message without message or subject to bridge (and log a warning in frontends if such a message is received) diff -r ba74914277cf -r df2bc2e704bc sat/core/xmpp.py --- a/sat/core/xmpp.py Wed Jan 02 18:25:55 2019 +0100 +++ b/sat/core/xmpp.py Wed Jan 02 18:28:30 2019 +0100 @@ -971,17 +971,21 @@ if C.MESS_KEY_ENCRYPTION in data: data[u"extra"][u"encrypted"] = C.BOOL_TRUE if data is not None: - self.host.bridge.messageNew( - data["uid"], - data["timestamp"], - data["from"].full(), - data["to"].full(), - data["message"], - data["subject"], - data["type"], - data["extra"], - profile=self.parent.profile, - ) + if data["message"] or data["subject"] or data["type"] == C.MESS_TYPE_INFO: + self.host.bridge.messageNew( + data["uid"], + data["timestamp"], + data["from"].full(), + data["to"].full(), + data["message"], + data["subject"], + data["type"], + data["extra"], + profile=self.parent.profile, + ) + else: + log.debug(u"Discarding bridge signal for empty message: {data}".format( + data=data)) return data def cancelErrorTrap(self, failure_): diff -r ba74914277cf -r df2bc2e704bc sat_frontends/primitivus/chat.py --- a/sat_frontends/primitivus/chat.py Wed Jan 02 18:25:55 2019 +0100 +++ b/sat_frontends/primitivus/chat.py Wed Jan 02 18:28:30 2019 +0100 @@ -492,42 +492,39 @@ if self.focus_marker_set: self.focus_marker_set = False - if not message.message: - log.error(u"Received an empty message for uid {}".format(message.uid)) - else: - wid = MessageWidget(message) - self.mess_walker.append(wid) - self._scrollDown() - if self._user_moved(message): - return # no notification for moved messages + wid = MessageWidget(message) + self.mess_walker.append(wid) + self._scrollDown() + if self._user_moved(message): + return # no notification for moved messages - # notifications + # notifications - if self._locked: - # we don't want notifications when locked - # because that's history messages - return + if self._locked: + # we don't want notifications when locked + # because that's history messages + return - if wid.mess_data.mention: - from_jid = wid.mess_data.from_jid - msg = _( - u"You have been mentioned by {nick} in {room}".format( - nick=wid.mess_data.nick, room=self.target - ) - ) - self.host.notify( - C.NOTIFY_MENTION, from_jid, msg, widget=self, profile=self.profile + if wid.mess_data.mention: + from_jid = wid.mess_data.from_jid + msg = _( + u"You have been mentioned by {nick} in {room}".format( + nick=wid.mess_data.nick, room=self.target ) - elif self.type == C.CHAT_ONE2ONE: - from_jid = wid.mess_data.from_jid - msg = _(u"{entity} is talking to you".format(entity=from_jid)) - self.host.notify( - C.NOTIFY_MESSAGE, from_jid, msg, widget=self, profile=self.profile - ) - else: - self.host.notify( - C.NOTIFY_MESSAGE, self.target, widget=self, profile=self.profile - ) + ) + self.host.notify( + C.NOTIFY_MENTION, from_jid, msg, widget=self, profile=self.profile + ) + elif self.type == C.CHAT_ONE2ONE: + from_jid = wid.mess_data.from_jid + msg = _(u"{entity} is talking to you".format(entity=from_jid)) + self.host.notify( + C.NOTIFY_MESSAGE, from_jid, msg, widget=self, profile=self.profile + ) + else: + self.host.notify( + C.NOTIFY_MESSAGE, self.target, widget=self, profile=self.profile + ) def addUser(self, nick): occupant = super(Chat, self).addUser(nick) diff -r ba74914277cf -r df2bc2e704bc sat_frontends/quick_frontend/quick_chat.py --- a/sat_frontends/quick_frontend/quick_chat.py Wed Jan 02 18:25:55 2019 +0100 +++ b/sat_frontends/quick_frontend/quick_chat.py Wed Jan 02 18:28:30 2019 +0100 @@ -584,6 +584,11 @@ profile, ) return + + if not msg and not subject and type_ != C.MESS_TYPE_INFO: + log.warning(u"Received an empty message for uid {}".format(uid)) + return + if self.type == C.CHAT_GROUP: if to_jid.resource and type_ != C.MESS_TYPE_GROUPCHAT: # we have a private message, we forward it to a private conversation