Philipp Hörist pushed to branch master at gajim / gajim

Commits:
85bc3896 by Philipp Hörist at 2018-07-30T19:58:22Z
Handle messages without 'to' correctly

- - - - -


2 changed files:

- gajim/common/modules/carbons.py
- gajim/common/modules/message.py


Changes:

=====================================
gajim/common/modules/carbons.py
=====================================
--- a/gajim/common/modules/carbons.py
+++ b/gajim/common/modules/carbons.py
@@ -73,7 +73,7 @@ def parse_carbon(con, stanza):
     type_ = carbon.getName()
     to = message.getTo()
     frm = message.getFrom()
-    log.info('Received type: %s, from: %s, to: %s', type_, to, frm)
+    log.info('Received type: %s, from: %s', type_, frm)
 
     if type_ == 'received':
         sent = False


=====================================
gajim/common/modules/message.py
=====================================
--- a/gajim/common/modules/message.py
+++ b/gajim/common/modules/message.py
@@ -58,6 +58,23 @@ class Message:
                                         nbxmpp.NS_IBB])
 
     def _message_received(self, con, stanza):
+        # https://tools.ietf.org/html/rfc6120#section-8.1.1.1
+        # If the stanza does not include a 'to' address then the client MUST
+        # treat it as if the 'to' address were included with a value of the
+        # client's full JID.
+        #
+        # Implementation Note: However, if the client does
+        # check the 'to' address then it is suggested to check at most the
+        # bare JID portion (not the full JID)
+
+        own_jid = self._con.get_own_jid().getStripped()
+        to = stanza.getTo()
+        if to is None:
+            stanza.setTo(own_jid)
+        elif not to.bareMatch(own_jid):
+            log.warning('Message addressed to someone else: %s', stanza)
+            raise nbxmpp.NodeProcessed
+
         # Check if a child of the message contains any
         # namespaces that we handle in other modules.
         # nbxmpp executes less common handlers last
@@ -118,7 +135,7 @@ class Message:
             if type_ == 'groupchat':
                 archive_jid = stanza.getFrom().getStripped()
             else:
-                archive_jid = self._con.get_own_jid().getStripped()
+                archive_jid = own_jid
             if app.logger.find_stanza_id(self._account,
                                          archive_jid,
                                          stanza_id,



View it on GitLab: 
https://dev.gajim.org/gajim/gajim/commit/85bc3896abcb21041bd89c7fefd96927dcfe2ed7

-- 
View it on GitLab: 
https://dev.gajim.org/gajim/gajim/commit/85bc3896abcb21041bd89c7fefd96927dcfe2ed7
You're receiving this email because of your account on dev.gajim.org.
_______________________________________________
Commits mailing list
[email protected]
https://lists.gajim.org/cgi-bin/listinfo/commits

Reply via email to