summaryrefslogtreecommitdiff
path: root/xmppdaemon.php
diff options
context:
space:
mode:
authorEvan Prodromou <evan@controlezvous.ca>2008-06-23 00:18:16 -0400
committerEvan Prodromou <evan@controlezvous.ca>2008-06-23 00:18:16 -0400
commite4f5893f7331325c37d7030b3895a94f23f80e33 (patch)
tree0cf794103944ac482935af12004c454b5bf3f17f /xmppdaemon.php
parent8b89e1cfb074d9255ab3eb66aa16ee0a01a0db7a (diff)
normalize jids before comparison
darcs-hash:20080623041816-34904-9a55d96a3e76e27b399706f7247bb715f396366b.gz
Diffstat (limited to 'xmppdaemon.php')
-rw-r--r--xmppdaemon.php18
1 files changed, 14 insertions, 4 deletions
diff --git a/xmppdaemon.php b/xmppdaemon.php
index b42e33566..e055182c9 100644
--- a/xmppdaemon.php
+++ b/xmppdaemon.php
@@ -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) {