diff options
author | Qijiang Fan <[email protected]> | 2015-01-28 15:20:21 +0800 |
---|---|---|
committer | Ingela Anderton Andin <[email protected]> | 2015-05-12 13:57:25 +0200 |
commit | 9fe3bc8eb1e982ecd4680d9f354dc6ba3f066904 (patch) | |
tree | d57cf90b37eb03b12e4e625a78b4729552607609 /lib/ssl/src/ssl_connection.erl | |
parent | 1e2569973101aaccdbb0c552948134cb1a58a7fd (diff) | |
download | otp-9fe3bc8eb1e982ecd4680d9f354dc6ba3f066904.tar.gz otp-9fe3bc8eb1e982ecd4680d9f354dc6ba3f066904.tar.bz2 otp-9fe3bc8eb1e982ecd4680d9f354dc6ba3f066904.zip |
ssl: add ssl:connection_information/[1,2]
This commit adds a new function, ssl:connection_information/[1,2]
to retrive the connection information from a SSLSocket.
And also, this deprecates a function ssl:connection_info/1, and
reimplements connection_info/1 with the new function.
Diffstat (limited to 'lib/ssl/src/ssl_connection.erl')
-rw-r--r-- | lib/ssl/src/ssl_connection.erl | 29 |
1 files changed, 7 insertions, 22 deletions
diff --git a/lib/ssl/src/ssl_connection.erl b/lib/ssl/src/ssl_connection.erl index 2c0b1b6257..64fa7bab0d 100644 --- a/lib/ssl/src/ssl_connection.erl +++ b/lib/ssl/src/ssl_connection.erl @@ -41,9 +41,9 @@ %% User Events -export([send/2, recv/3, close/1, shutdown/2, - new_user/2, get_opts/2, set_opts/2, info/1, session_info/1, + new_user/2, get_opts/2, set_opts/2, session_info/1, peer_certificate/1, renegotiation/1, negotiated_protocol/1, prf/5, - sni_hostname/1 + connection_information/1 ]). -export([handle_session/7]). @@ -162,12 +162,12 @@ recv(Pid, Length, Timeout) -> sync_send_all_state_event(Pid, {recv, Length, Timeout}). %%-------------------------------------------------------------------- --spec sni_hostname(pid()) -> undefined | string(). +-spec connection_information(pid()) -> {ok, list()} | {error, reason()}. %% %% Description: Get the SNI hostname %%-------------------------------------------------------------------- -sni_hostname(Pid) when is_pid(Pid) -> - sync_send_all_state_event(Pid, sni_hostname). +connection_information(Pid) when is_pid(Pid) -> + sync_send_all_state_event(Pid, connection_information). %%-------------------------------------------------------------------- -spec close(pid()) -> ok | {error, reason()}. @@ -223,14 +223,6 @@ set_opts(ConnectionPid, Options) -> sync_send_all_state_event(ConnectionPid, {set_opts, Options}). %%-------------------------------------------------------------------- --spec info(pid()) -> {ok, {atom(), tuple()}} | {error, reason()}. -%% -%% Description: Returns ssl protocol and cipher used for the connection -%%-------------------------------------------------------------------- -info(ConnectionPid) -> - sync_send_all_state_event(ConnectionPid, info). - -%%-------------------------------------------------------------------- -spec session_info(pid()) -> {ok, list()} | {error, reason()}. %% %% Description: Returns info about the ssl session @@ -838,13 +830,6 @@ handle_sync_event({prf, Secret, Label, Seed, WantedLength}, _, StateName, error:Reason -> {error, Reason} end, {reply, Reply, StateName, State, get_timeout(State)}; -handle_sync_event(info, _, StateName, - #state{negotiated_version = Version, - session = #session{cipher_suite = Suite}} = State) -> - - AtomVersion = tls_record:protocol_version(Version), - {reply, {ok, {AtomVersion, ssl:suite_definition(Suite)}}, - StateName, State, get_timeout(State)}; handle_sync_event(session_info, _, StateName, #state{session = #session{session_id = Id, cipher_suite = Suite}} = State) -> @@ -855,8 +840,8 @@ handle_sync_event(peer_certificate, _, StateName, #state{session = #session{peer_certificate = Cert}} = State) -> {reply, {ok, Cert}, StateName, State, get_timeout(State)}; -handle_sync_event(sni_hostname, _, StateName, #state{sni_hostname = SNIHostname} = State) -> - {reply, SNIHostname, StateName, State}. +handle_sync_event(connection_information, _, StateName, #state{sni_hostname = SNIHostname, session = #session{cipher_suite = CipherSuite}, negotiated_version = Version} = State) -> + {reply, {ok, [{protocol, tls_record:protocol_version(Version)}, {cipher_suite, ssl:suite_definition(CipherSuite)}, {sni_hostname, SNIHostname}]}, StateName, State, get_timeout(State)}. handle_info({ErrorTag, Socket, econnaborted}, StateName, |