[Net-IMAP-Server] Mailbox rename
Alex Vandiver
alexmv at bestpractical.com
Tue Jul 28 11:24:31 EDT 2009
On Tue, 2009-07-28 at 16:46 +0200, Jan Dvořák wrote:
> Hi, I think I found little bug in renaming mailboxes. If you rename
> mailbox and after it call list command, in result mailbox has still same
> name. If you try select mailbox with old name, mailbox does not exists.
> I think there is $mailbox->full_path( purge => 1 ) missing.
Does the below solve it?
- Alex
>From 142dd3af0e458a105f7874790c363a243c4a8e37 Mon Sep 17 00:00:00 2001
From: Alex Vandiver <alexmv at bestpractical.com>
Date: Tue, 28 Jul 2009 11:22:45 -0400
Subject: [PATCH] Fix caching in rename by setting name inside ->reparent
---
lib/Net/IMAP/Server/Command/Rename.pm | 3 +--
lib/Net/IMAP/Server/Mailbox.pm | 7 ++++---
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/lib/Net/IMAP/Server/Command/Rename.pm b/lib/Net/IMAP/Server/Command/Rename.pm
index cab5435..1c7a3cd 100644
--- a/lib/Net/IMAP/Server/Command/Rename.pm
+++ b/lib/Net/IMAP/Server/Command/Rename.pm
@@ -44,8 +44,7 @@ sub run {
$base = $part;
}
- $mailbox->reparent($base) or return $self->no_command("Permission denied");
- $mailbox->name($newname);
+ $mailbox->reparent($base, $newname) or return $self->no_command("Permission denied");
$self->ok_completed();
}
diff --git a/lib/Net/IMAP/Server/Mailbox.pm b/lib/Net/IMAP/Server/Mailbox.pm
index 4511f71..c36a08c 100644
--- a/lib/Net/IMAP/Server/Mailbox.pm
+++ b/lib/Net/IMAP/Server/Mailbox.pm
@@ -208,11 +208,11 @@ sub create {
return $self->add_child(@_);
}
-=head3 reparent MAILBOX
+=head3 reparent MAILBOX [NAME]
Reparents this mailbox to be a child of the given
-L<Net::IMAP::Server::Mailbox> C<MAILBOX>. Should return 0 if the
-reparenting is denied or fails.
+L<Net::IMAP::Server::Mailbox> C<MAILBOX>, with the given C<NAME>.
+Should return 0 if the reparenting is denied or fails.
=cut
@@ -224,6 +224,7 @@ sub reparent {
[ grep { $_ ne $self } @{ $self->parent->children } ] );
push @{ $parent->children }, $self;
$self->parent($parent);
+ $self->name(shift) if @_;
$self->full_path( purge => 1 );
return 1;
}
--
1.6.3.3.473.gb74fc4.dirty
More information about the Net-IMAP-Server
mailing list