forked from GNUsocial/gnu-social
		
	normalize jids before comparison
darcs-hash:20080623041816-34904-9a55d96a3e76e27b399706f7247bb715f396366b.gz
This commit is contained in:
		@@ -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) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user