Index: Keeper.pm =================================================================== --- Keeper.pm (revision 242) +++ Keeper.pm (revision 243) @@ -51,6 +51,8 @@ sub logoff { my $self = shift; + my %opts = @_; + my $sid = _get_session_id (); my $session = _get_session_object ( $sid ); return unless ref $session; @@ -60,11 +62,19 @@ warn "LOGOFF: New or deprecated session. Old sid = '$sid', new sid = '$session_id'" if $DEBUG; _store_session_id ($session_id) } else { - foreach my $key ( keys %$session ) { - next if $key eq '_session_id'; - next if $key eq '_timestamp'; - delete $session->{$key}; - } + if ( exists $opts{clear} ) { + my @clear = qw( id email login name nick type status ltime ); + push @clear, @{ $opts{clear} } if exists $opts{clear} && ref $opts{clear} eq 'ARRAY' && @{ $opts{clear} }; + foreach my $key ( @clear ) { + delete $session->{$key}; + } + } else { + foreach my $key ( keys %$session ) { + next if $key eq '_session_id'; + next if $key eq '_timestamp'; + delete $session->{$key}; + } + } } untie %$session; return 1;