diff options
author | Ingela Anderton Andin <[email protected]> | 2011-11-14 10:17:59 +0100 |
---|---|---|
committer | Ingela Anderton Andin <[email protected]> | 2011-11-15 11:08:13 +0100 |
commit | a7b8bf5b8162e9c0473213c77d17c739bdffdc35 (patch) | |
tree | 6959a80d87e064f3c3a4e5f0d5b995bec7283a01 /lib/ssl/src/ssl_handshake.erl | |
parent | 45305535f3348d8ea9a637b2236fd079e147971c (diff) | |
download | otp-a7b8bf5b8162e9c0473213c77d17c739bdffdc35.tar.gz otp-a7b8bf5b8162e9c0473213c77d17c739bdffdc35.tar.bz2 otp-a7b8bf5b8162e9c0473213c77d17c739bdffdc35.zip |
Replaced ets:next traversal with ets:foldl and throw
ets:next needs an explicit safe_fixtable call to be safe, we
rather use ets:foldl and throw to get out of it when we find the
correct entry.
Diffstat (limited to 'lib/ssl/src/ssl_handshake.erl')
-rw-r--r-- | lib/ssl/src/ssl_handshake.erl | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/lib/ssl/src/ssl_handshake.erl b/lib/ssl/src/ssl_handshake.erl index f873a6a913..7eb7f44df6 100644 --- a/lib/ssl/src/ssl_handshake.erl +++ b/lib/ssl/src/ssl_handshake.erl @@ -1092,18 +1092,12 @@ certificate_authorities(CertDbHandle, CertDbRef) -> list_to_binary([Enc(Cert) || {_, Cert} <- Authorities]). certificate_authorities_from_db(CertDbHandle, CertDbRef) -> - certificate_authorities_from_db(CertDbHandle, CertDbRef, no_candidate, []). - -certificate_authorities_from_db(CertDbHandle,CertDbRef, PrevKey, Acc) -> - case ssl_manager:issuer_candidate(PrevKey, CertDbHandle) of - no_more_candidates -> - lists:reverse(Acc); - {{CertDbRef, _, _} = Key, Cert} -> - certificate_authorities_from_db(CertDbHandle, CertDbRef, Key, [Cert|Acc]); - {Key, _Cert} -> - %% skip certs not from this ssl connection - certificate_authorities_from_db(CertDbHandle, CertDbRef, Key, Acc) - end. + ConnectionCerts = fun({{Ref, _, _}, Cert}, Acc) when Ref == CertDbRef -> + [Cert | Acc]; + (_, Acc) -> + Acc + end, + ssl_certificate_db:foldl(ConnectionCerts, [], CertDbHandle). digitally_signed(Hash, #'RSAPrivateKey'{} = Key) -> public_key:encrypt_private(Hash, Key, |