diff options
author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2017-12-07 00:29:19 +0300 |
---|---|---|
committer | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2017-12-07 00:29:19 +0300 |
commit | 344a2611f2974f6ad0c1e5573f0470c416651b20 (patch) | |
tree | 8886ef23ba27f83f97944598a76efee1b0a9ac0d /src/ejabberd_pkix.erl | |
parent | mod_muc_room: Fix typo (diff) |
Avoid infinite loop between self-signed certs
Diffstat (limited to 'src/ejabberd_pkix.erl')
-rw-r--r-- | src/ejabberd_pkix.erl | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/ejabberd_pkix.erl b/src/ejabberd_pkix.erl index ef25386cd..a67df1288 100644 --- a/src/ejabberd_pkix.erl +++ b/src/ejabberd_pkix.erl @@ -689,11 +689,16 @@ get_cert_paths(Certs) -> end, Certs), lists:foreach( fun({Cert1, Cert2}) when Cert1 /= Cert2 -> - case public_key:pkix_is_issuer(Cert1, Cert2) of + case public_key:pkix_is_self_signed(Cert1) of true -> - digraph:add_edge(G, Cert1, Cert2); + ok; false -> - ok + case public_key:pkix_is_issuer(Cert1, Cert2) of + true -> + digraph:add_edge(G, Cert1, Cert2); + false -> + ok + end end; (_) -> ok |