summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Felder <feld@feld.me>2024-09-15 23:18:17 -0400
committerMark Felder <feld@feld.me>2024-09-15 23:18:18 -0400
commit91d1d7260b7084f59ae42e7c4b46c7fb963fda96 (patch)
tree05ae6db0c2376477d0e82ab3918849604fda3082
parentaf3bf8a4628c0b2981d69f624e3be298adc7dfe6 (diff)
downloadpleroma-91d1d7260b7084f59ae42e7c4b46c7fb963fda96.tar.gz
pleroma-91d1d7260b7084f59ae42e7c4b46c7fb963fda96.zip
Retain the try do so an LDAP failure can fall back to local database.
This fixes tests but the automatic fallback may not be well documented behavior.
-rw-r--r--lib/pleroma/web/auth/ldap_authenticator.ex48
1 files changed, 26 insertions, 22 deletions
diff --git a/lib/pleroma/web/auth/ldap_authenticator.ex b/lib/pleroma/web/auth/ldap_authenticator.ex
index 18a4e81ee..ad5bc9863 100644
--- a/lib/pleroma/web/auth/ldap_authenticator.ex
+++ b/lib/pleroma/web/auth/ldap_authenticator.ex
@@ -65,30 +65,34 @@ defmodule Pleroma.Web.Auth.LDAPAuthenticator do
case :eldap.open([to_charlist(host)], options) do
{:ok, connection} ->
- cond do
- ssl ->
- :application.ensure_all_started(:ssl)
-
- tls ->
- case :eldap.start_tls(
- connection,
- tlsopts,
- @connection_timeout
- ) do
- :ok ->
- :ok
-
- error ->
- Logger.error("Could not start TLS: #{inspect(error)}")
- :eldap.close(connection)
- end
-
- true ->
- :ok
+ try do
+ cond do
+ ssl ->
+ :application.ensure_all_started(:ssl)
+
+ tls ->
+ case :eldap.start_tls(
+ connection,
+ tlsopts,
+ @connection_timeout
+ ) do
+ :ok ->
+ :ok
+
+ error ->
+ Logger.error("Could not start TLS: #{inspect(error)}")
+ :eldap.close(connection)
+ end
+
+ true ->
+ :ok
+ end
+
+ bind_user(connection, ldap, name, password)
+ after
+ :eldap.close(connection)
end
- bind_user(connection, ldap, name, password)
-
{:error, error} ->
Logger.error("Could not open LDAP connection: #{inspect(error)}")
{:error, {:ldap_connection_error, error}}