Changeset 567

Show
Ignore:
Timestamp:
07/09/06 07:19:28 (4 years ago)
Author:
bradfitz
Message:

forget last broadcast presence on disconnect

Location:
trunk/lib/DJabberd
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • trunk/lib/DJabberd/Connection/ClientIn.pm

    r546 r567  
    126126    if (my $jid = $self->bound_jid) { 
    127127        $self->vhost->unregister_jid($jid, $self); 
     128        DJabberd::Presence->forget_last_presence($jid); 
    128129    } 
    129130 
  • trunk/lib/DJabberd/Presence.pm

    r498 r567  
    2727# used by DJabberd::PresenceChecker::Local. 
    2828my %last_bcast;   # barejidstring -> { full_jid_string -> $cloned_pres_stanza } 
     29 
     30sub forget_last_presence { 
     31    my ($class, $jid) = @_; 
     32 
     33    my $barestr = $jid->as_bare_string; 
     34    my $map     = $last_bcast{$barestr}   or return; 
     35    delete $map->{$jid->as_string}; 
     36    delete $last_bcast{$barestr} unless %$map; 
     37} 
    2938 
    3039# is this directed presence?  must be to a JID, and must be available/unavailable, not probe/subscribe/etc.