[408] in BarnOwl Developers

home help back first fref pref prev next nref lref last post

[D-O-H] r541 - trunk/owl/perl/lib/Net/XMPP

daemon@ATHENA.MIT.EDU (asedeno@MIT.EDU)
Thu Oct 29 18:05:50 2009

Resent-From: nelhage@mit.edu
Resent-To: barnowl-dev-mtg@charon.mit.edu
To: dirty-owl-hackers@mit.edu
From: asedeno@MIT.EDU
Reply-to: dirty-owl-hackers@MIT.EDU
Date: Sun, 21 Jan 2007 18:29:01 -0500 (EST)

Author: asedeno
Date: 2007-01-21 18:29:01 -0500 (Sun, 21 Jan 2007)
New Revision: 541

Modified:
   trunk/owl/perl/lib/Net/XMPP/Roster.pm
Log:
Update to Roster.pm to not blow away presence information for a jid
on every roster update for that jid.



Modified: trunk/owl/perl/lib/Net/XMPP/Roster.pm
===================================================================
--- trunk/owl/perl/lib/Net/XMPP/Roster.pm	2007-01-21 21:50:29 UTC (rev 540)
+++ trunk/owl/perl/lib/Net/XMPP/Roster.pm	2007-01-21 23:29:01 UTC (rev 541)
@@ -269,12 +269,21 @@
     my ($jid,%item) = @_;
 
     $jid = $jid->GetJID() if UNIVERSAL::isa($jid,"Net::XMPP::JID");
+    if (exists $self->{JIDS}->{$jid})
+    {
+	foreach my $key (keys %item)
+	{
+	    $self->{JIDS}->{$jid}->{$key} = $item{$key};
+	}
+    }
+    else
+    {
+        $self->{JIDS}->{$jid} = \%item;
 
-    $self->{JIDS}->{$jid} = \%item;
-
+    }
     foreach my $group (@{$item{groups}})
     {
-        $self->{GROUPS}->{$group}->{$jid} = 1;
+	$self->{GROUPS}->{$group}->{$jid} = 1;
     }
 }
 
@@ -439,12 +448,14 @@
 
     foreach my $jid (keys(%{$roster}))
     {
-        $self->remove($jid);
-
         if ($roster->{$jid}->{subscription} ne "remove")
         {
             $self->add($jid, %{$roster->{$jid}});
         }
+        else
+        {
+            $self->remove($jid);
+        }
     }
 }
 


home help back first fref pref prev next nref lref last post