]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
normalize jids before comparison
authorEvan Prodromou <evan@controlezvous.ca>
Mon, 23 Jun 2008 04:18:16 +0000 (00:18 -0400)
committerEvan Prodromou <evan@controlezvous.ca>
Mon, 23 Jun 2008 04:18:16 +0000 (00:18 -0400)
darcs-hash:20080623041816-34904-9a55d96a3e76e27b399706f7247bb715f396366b.gz

xmppdaemon.php

index b42e33566a1fb285aa96e81b222810df88847934..e055182c92e280bc1d14e11baefeaec2d377d2a9 100644 (file)
@@ -51,6 +51,14 @@ class XMPPDaemon {
                return !$this->conn->disconnected;
        }
 
+       function normalize_jid($jid) {
+               preg_match("/(?:([^\@]+)\@)?([^\/]+)(?:\/(.*))?$/", $jid, $matches);
+               $node = $matches[1];
+               $server = $matches[2];
+               $resource = $matches[3];
+               return strtolower($node.'@'.$server);
+       }
+       
        function handle() {
                while(!$this->conn->disconnected) {
                        $payloads = $this->conn->processUntil(array('message', 'presence',
@@ -73,9 +81,10 @@ class XMPPDaemon {
        }
 
        function handle_message(&$pl) {
-               $user = User::staticGet('jabber', $pl['from']);
+               $from = $this->normalize_jid($pl['from']);
+               $user = User::staticGet('jabber', $from);
                if (!$user) {
-                       $this->log(LOG_WARNING, 'Message from unknown user ' . $pl['from']);
+                       $this->log(LOG_WARNING, 'Message from unknown user ' . $from);
                        return;
                }
                if ($this->handle_command($user, $pl['body'])) {
@@ -147,9 +156,10 @@ class XMPPDaemon {
        }
 
        function handle_presence(&$pl) {
-               $user = User::staticGet('jabber', $pl['from']);
+               $from = $this->normalize_jid($pl['from']);
+               $user = User::staticGet('jabber', $from);
                if (!$user) {
-                       $this->log(LOG_WARNING, 'Message from unknown user ' . $pl['from']);
+                       $this->log(LOG_WARNING, 'Message from unknown user ' . $from);
                        return;
                }
                if ($user->updatefrompresence) {