diff options
author | Ingela Anderton Andin <[email protected]> | 2014-04-28 23:01:21 +0200 |
---|---|---|
committer | Ingela Anderton Andin <[email protected]> | 2014-05-09 11:14:14 +0200 |
commit | c80735b0c82ec0bbaa2e2bda4f1598210b193556 (patch) | |
tree | bdca3c192b6441e1da1ecffe6a996482d889d352 /lib/ssl/src/ssl_dist_sup.erl | |
parent | 138bdae063206223bb35258780e0ec1b4301967b (diff) | |
download | otp-c80735b0c82ec0bbaa2e2bda4f1598210b193556.tar.gz otp-c80735b0c82ec0bbaa2e2bda4f1598210b193556.tar.bz2 otp-c80735b0c82ec0bbaa2e2bda4f1598210b193556.zip |
ssl: Handle socket option inheritance when pooling of accept sockets is used
Implement a listen socket tracker process that holds the emulated socket
options so that it is possible to implement a destructive ssl:setopts
on SSL/TLS listen sockets without changing the options of the internal
socket as we want that socket to have the internal socket option values.
Diffstat (limited to 'lib/ssl/src/ssl_dist_sup.erl')
-rw-r--r-- | lib/ssl/src/ssl_dist_sup.erl | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/lib/ssl/src/ssl_dist_sup.erl b/lib/ssl/src/ssl_dist_sup.erl index 22614a2d34..58efeaf892 100644 --- a/lib/ssl/src/ssl_dist_sup.erl +++ b/lib/ssl/src/ssl_dist_sup.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2011-2013. All Rights Reserved. +%% Copyright Ericsson AB 2011-2014. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -45,9 +45,11 @@ start_link() -> init([]) -> SessionCertManager = session_and_cert_manager_child_spec(), ConnetionManager = connection_manager_child_spec(), + ListenOptionsTracker = listen_options_tracker_child_spec(), ProxyServer = proxy_server_child_spec(), - {ok, {{one_for_all, 10, 3600}, [SessionCertManager, ConnetionManager, + {ok, {{one_for_all, 10, 3600}, [SessionCertManager, ConnetionManager, + ListenOptionsTracker, ProxyServer]}}. %%-------------------------------------------------------------------- @@ -68,7 +70,7 @@ connection_manager_child_spec() -> StartFunc = {tls_connection_sup, start_link_dist, []}, Restart = permanent, Shutdown = 4000, - Modules = [ssl_connection], + Modules = [tls_connection_sup], Type = supervisor, {Name, StartFunc, Restart, Shutdown, Type, Modules}. @@ -81,3 +83,11 @@ proxy_server_child_spec() -> Type = worker, {Name, StartFunc, Restart, Shutdown, Type, Modules}. +listen_options_tracker_child_spec() -> + Name = ssl_socket_dist, + StartFunc = {ssl_listen_tracker_sup, start_link_dist, []}, + Restart = permanent, + Shutdown = 4000, + Modules = [ssl_socket], + Type = supervisor, + {Name, StartFunc, Restart, Shutdown, Type, Modules}. |