diff --git a/ldap-server/ldap-server-lib.pl b/ldap-server/ldap-server-lib.pl index 665a0128d..4a176d551 100644 --- a/ldap-server/ldap-server-lib.pl +++ b/ldap-server/ldap-server-lib.pl @@ -69,6 +69,7 @@ local $ldap; foreach $ssl (@ssls) { $ldap = Net::LDAP->new($server, port => $port); if (!$ldap) { + # Connection failed .. give up completely return &text('connect_eldap', "$server", $port); } if ($ssl) { @@ -76,11 +77,15 @@ foreach $ssl (@ssls) { local $mesg; eval { $mesg = $ldap->start_tls(); }; if ($@ || !$mesg || $mesg->code) { - next if (@ssls); # Try non-SSL - } - else { - return &text('connect_essl', "$server", - $@ ? %@ : &ldap_error($mesg)); + # Failed to switch to SSL mode. If also trying non-SSL, + # continue around the loop. Otherwise, give up + if (@ssls > 1) { + next; + } + else { + return &text('connect_essl', "$server", + $@ ? $@ : &ldap_error($mesg)); + } } } }