[Bps-public-commit] r9835 - in Net-IMAP-Server: lib/Net/IMAP/Server lib/Net/IMAP/Server/Command

alexmv at bestpractical.com alexmv at bestpractical.com
Thu Dec 6 19:12:33 EST 2007


Author: alexmv
Date: Thu Dec  6 19:12:33 2007
New Revision: 9835

Modified:
   Net-IMAP-Server/   (props changed)
   Net-IMAP-Server/lib/Net/IMAP/Server/Command/Select.pm
   Net-IMAP-Server/lib/Net/IMAP/Server/Connection.pm
   Net-IMAP-Server/lib/Net/IMAP/Server/Mailbox.pm

Log:
 r25507 at zoq-fot-pik:  chmrr | 2007-12-06 19:12:23 -0500
  * 'FETCH *' is valid to fetch the last message
  * Add a callback to a mailbox when it is unselected
  * uidnext-1 isn't the last uid; go actually find the uid
  * References to messages are also stored in $mailbox->uids; clean
    that out on prep_for_destroy, as well
  * read-only setting for examine should be set after the select


Modified: Net-IMAP-Server/lib/Net/IMAP/Server/Command/Select.pm
==============================================================================
--- Net-IMAP-Server/lib/Net/IMAP/Server/Command/Select.pm	(original)
+++ Net-IMAP-Server/lib/Net/IMAP/Server/Command/Select.pm	Thu Dec  6 19:12:33 2007
@@ -25,9 +25,9 @@
     my $self = shift;
 
     my $mailbox = $self->connection->model->lookup( $self->parsed_options );
-    $self->connection->selected_read_only(1) if $self->command eq "Examine";
     $mailbox->poll;
     $self->connection->selected($mailbox);
+    $self->connection->selected_read_only(1) if $self->command eq "Examine";
 
     $self->untagged_response(
         'FLAGS (' . join( ' ', $mailbox->flags ) . ')' );

Modified: Net-IMAP-Server/lib/Net/IMAP/Server/Connection.pm
==============================================================================
--- Net-IMAP-Server/lib/Net/IMAP/Server/Connection.pm	(original)
+++ Net-IMAP-Server/lib/Net/IMAP/Server/Connection.pm	Thu Dec  6 19:12:33 2007
@@ -141,8 +141,11 @@
 
 sub selected {
     my $self = shift;
-    $self->send_untagged if @_ and $self->selected;
-    $self->selected_read_only(0) if @_ and $self->selected;
+    if (@_ and $self->selected) {
+        $self->send_untagged;
+        $self->selected->close;
+        $self->selected_read_only(0);
+    }
     return $self->_selected(@_);
 }
 
@@ -209,6 +212,8 @@
             $ids{$_}++ for @{ $messages } + 0, $1 .. @{ $messages } + 0;
         } elsif (/^(\d+)$/) {
             $ids{$1}++;
+        } elsif (/^\*$/) {
+            $ids{@{$messages} + 0}++;
         }
     }
     return

Modified: Net-IMAP-Server/lib/Net/IMAP/Server/Mailbox.pm
==============================================================================
--- Net-IMAP-Server/lib/Net/IMAP/Server/Mailbox.pm	(original)
+++ Net-IMAP-Server/lib/Net/IMAP/Server/Mailbox.pm	Thu Dec  6 19:12:33 2007
@@ -95,9 +95,11 @@
         if (/^(\d+):(\d+)$/) {
             $ids{$_}++ for $2 > $1 ? $1 .. $2 : $2 .. $1;
         } elsif (/^(\d+):\*$/ or /^\*:(\d+)$/) {
-            $ids{$_}++ for $self->uidnext - 1, $1 .. $self->uidnext - 1;
+            $ids{$_}++ for $self->messages->[-1]->uid, $1 .. $self->messages->[-1]->uid;
         } elsif (/^(\d+)$/) {
             $ids{$1}++;
+        } elsif (/^\*$/) {
+            $ids{ $self->messages->[-1]->uid }++;
         }
     }
     return
@@ -246,10 +248,13 @@
     $_->prep_for_destroy for @kids;
     my @messages = @{$self->messages || []};
     $self->messages([]);
+    $self->uids({});
     $_->prep_for_destroy for @messages;
     $self->parent(undef);
 }
 
+sub close {}
+
 package Email::IMAPFolder;
 use base 'Email::Folder';
 use YAML;



More information about the Bps-public-commit mailing list