]> git.g-eek.se Git - interimap.git/commitdiff
LOGINDISABLED only disables plain-text mechanisms.
authorGuilhem Moulin <guilhem@fripost.org>
Sat, 25 Jul 2015 22:58:12 +0000 (00:58 +0200)
committerGuilhem Moulin <guilhem@fripost.org>
Sat, 25 Jul 2015 23:15:51 +0000 (01:15 +0200)
Also, LOGIN is always supported.

lib/Net/IMAP/Sync.pm

index 9db339be7fbb40269be71bdbb8f29093ddafc1fb..cea647feaeeeafcfe3cbb28ce9cd2643c394d9d9 100644 (file)
@@ -335,11 +335,12 @@ sub new($%) {
             @caps = $self->capabilities();
         }
 
-        $self->fail("Logins are disabled.") if grep {$_ eq 'LOGINDISABLED'} @caps;
-        my @mechs = grep defined, map { /^AUTH=(.+)/ ? $1 : undef } @caps;
+        my @mechs = ('LOGIN', grep defined, map { /^AUTH=(.+)/ ? $1 : undef } @caps);
         my $mech = (grep defined, map {my $m = $_; (grep {$m eq $_} @mechs) ? $m : undef}
                                       split(/ /, $self->{auth}))[0];
         $self->fail("Failed to choose an authentication mechanism") unless defined $mech;
+        $self->fail("Logins are disabled.") if ($mech eq 'LOGIN' or $mech eq 'PLAIN') and
+                                               grep {$_ eq 'LOGINDISABLED'} @caps;
 
         my ($command, $callback);
         my ($username, $password) = @$self{qw/username password/};