Merge pull request #4448 from rabbitmq/mergify/bp/v3.9.x/pr-4447

Take other eldap_search_result cases into account (backport #4446) (backport #4447)
This commit is contained in:
Michael Klishin 2022-04-05 19:39:27 +04:00 committed by GitHub
commit 9c078e5fbb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 28 additions and 8 deletions

View File

@ -352,9 +352,15 @@ search_groups(LDAP, Desc, GroupsBase, Scope, DN) ->
[];
{ok, {referral, Referrals}} ->
{error, {referrals_not_supported, Referrals}};
{ok, #eldap_search_result{entries = []}} ->
%% support #eldap_search_result before and after
%% https://github.com/erlang/otp/pull/5538
{ok, {eldap_search_result, [], _Referrals}} ->
[];
{ok, #eldap_search_result{entries = Entries}} ->
{ok, {eldap_search_result, [], _Referrals, _Controls}}->
[];
{ok, {eldap_search_result, Entries, _Referrals}} ->
[ON || #eldap_entry{object_name = ON} <- Entries];
{ok, {eldap_search_result, Entries, _Referrals, _Controls}} ->
[ON || #eldap_entry{object_name = ON} <- Entries]
end.
@ -438,7 +444,11 @@ object_exists(DN, Filter, LDAP) ->
{scope, eldap:baseObject()}]) of
{ok, {referral, Referrals}} ->
{error, {referrals_not_supported, Referrals}};
{ok, #eldap_search_result{entries = Entries}} ->
%% support #eldap_search_result before and after
%% https://github.com/erlang/otp/pull/5538
{ok, {eldap_search_result, Entries, _Referrals}} ->
length(Entries) > 0;
{ok, {eldap_search_result, Entries, _Referrals, _Controls}} ->
length(Entries) > 0;
{error, _} = E ->
E
@ -451,9 +461,15 @@ attribute(DN, AttributeName, LDAP) ->
{attributes, [AttributeName]}]) of
{ok, {referral, Referrals}} ->
{error, {referrals_not_supported, Referrals}};
{ok, #eldap_search_result{entries = E = [#eldap_entry{}|_]}} ->
%% support #eldap_search_result before and after
%% https://github.com/erlang/otp/pull/5538
{ok, {eldap_search_result, E = [#eldap_entry{}|_], _Referrals}} ->
get_attributes(AttributeName, E);
{ok, #eldap_search_result{entries = _}} ->
{ok, {eldap_search_result, E = [#eldap_entry{}|_], _Referrals, _Controls}} ->
get_attributes(AttributeName, E);
{ok, {eldap_search_result, _Entries, _Referrals}} ->
{error, not_found};
{ok, {eldap_search_result, _Entries, _Referrals, _Controls}} ->
{error, not_found};
{error, _} = E ->
E
@ -837,7 +853,11 @@ dn_lookup(Username, LDAP) ->
{ok, {eldap_search_result, [#eldap_entry{object_name = DN}], _Referrals, _Controls}}->
?L1("DN lookup: ~s -> ~s", [Username, DN]),
DN;
{ok, #eldap_search_result{entries = Entries}} ->
{ok, {eldap_search_result, Entries, _Referrals}} ->
rabbit_log_ldap:warning("Searching for DN for ~s, got back ~p",
[Filled, Entries]),
Filled;
{ok, {eldap_search_result, Entries, _Referrals, _Controls}} ->
rabbit_log_ldap:warning("Searching for DN for ~s, got back ~p",
[Filled, Entries]),
Filled;