aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/Net/IMAP/Sync.pm8
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/Net/IMAP/Sync.pm b/lib/Net/IMAP/Sync.pm
index bb99dcb..b864db8 100644
--- a/lib/Net/IMAP/Sync.pm
+++ b/lib/Net/IMAP/Sync.pm
@@ -387,8 +387,9 @@ sub new($%) {
# Close handles when the Net::IMAP::Sync object is destroyed.
sub DESTROY($) {
my $self = shift;
- foreach (qw/STDIN STDOUT/) {
- $self->{$_}->close() if defined $self->{$_} and $self->{$_}->opened();
+ if (defined $self->{STDIN} and $self->{STDIN}->opened() and
+ defined $self->{STDOUT} and $self->{STDOUT}->opened()) {
+ $self->logout();
}
$self->{STDERR}->close() if defined $self->{STDERR} and $self->{STDERR}->opened()
and $self->{STDERR} ne \*STDERR;
@@ -1394,6 +1395,9 @@ sub _resp($$;$$$) {
if (s/\A\* //) {
if (s/\ABYE //) {
+ foreach (qw/STDIN STDOUT/) {
+ $self->{$_}->close() if defined $self->{$_} and $self->{$_}->opened();
+ }
exit 0;
}
elsif (s/\A(?:OK|NO|BAD) //) {