Skip to content

Commit 8bdc7e6

Browse files
committed
ssl: Remove unnecessary code generalization
1 parent c838c6c commit 8bdc7e6

File tree

7 files changed

+46
-74
lines changed

7 files changed

+46
-74
lines changed

lib/ssl/src/dtls_socket.erl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -80,19 +80,19 @@ accept({Listener,_}, #config{}, _Timeout) ->
8080
{error, Reason}
8181
end.
8282

83-
connect(Address, Port, #config{transport_info = {Transport, _, _, _, _} = CbInfo,
84-
connection_cb = ConnectionCb,
83+
connect(Host, Port, #config{transport_info = CbInfo,
8584
ssl = SslOpts,
8685
emulated = EmOpts,
8786
inet_ssl = SocketOpts,
8887
tab = _Tab
8988
}, Timeout) ->
89+
Transport = element(1, CbInfo),
9090
case Transport:open(0, SocketOpts ++ internal_inet_values()) of
9191
{ok, Socket} ->
92-
ssl_gen_statem:connect(ConnectionCb, Address, Port, {{Address, Port},Socket},
93-
{SslOpts,
94-
emulated_socket_options(EmOpts, #socket_options{}), undefined},
95-
self(), CbInfo, Timeout);
92+
dtls_gen_connection:start_fsm(client, Host, Port, {{Host, Port}, Socket},
93+
{SslOpts,
94+
emulated_socket_options(EmOpts, #socket_options{}), undefined},
95+
self(), CbInfo, Timeout);
9696
{error, _} = Error->
9797
Error
9898
end.

lib/ssl/src/ssl.erl

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2245,8 +2245,10 @@ connect(Host, Port, Options, Timeout)
22452245
dtls_socket:connect(Host,Port,Config,Timeout)
22462246
end
22472247
catch
2248-
throw:Error ->
2249-
Error
2248+
exit:{noproc, _} ->
2249+
{error, ssl_not_started};
2250+
throw:Error ->
2251+
Error
22502252
end.
22512253

22522254
%%--------------------------------------------------------------------
@@ -2456,11 +2458,11 @@ handshake(Socket, SslOptions, Timeout)
24562458
ok = tls_socket:setopts(Transport, Socket, tls_socket:internal_inet_values()),
24572459
{ok, Port} = tls_socket:port(Transport, Socket),
24582460
{ok, SessionIdHandle} = tls_socket:session_id_tracker(ssl_unknown_listener, SslOpts),
2459-
ssl_gen_statem:handshake(ConnetionCb, Port, Socket,
2460-
{SslOpts,
2461-
tls_socket:emulated_socket_options(EmOpts, #socket_options{}),
2462-
[{session_id_tracker, SessionIdHandle}]},
2463-
self(), CbInfo, Timeout)
2461+
ConnetionCb:start_fsm(server, "localhost", Port, Socket,
2462+
{SslOpts,
2463+
tls_socket:emulated_socket_options(EmOpts, #socket_options{}),
2464+
[{session_id_tracker, SessionIdHandle}]},
2465+
self(), CbInfo, Timeout)
24642466
catch
24652467
Error = {error, _Reason} -> Error
24662468
end.

lib/ssl/src/ssl_gen_statem.erl

Lines changed: 0 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,6 @@
4242
-export([opposite_role/1,
4343
init_ssl_config/3,
4444
ssl_config/3,
45-
connect/8,
46-
handshake/7,
4745
handshake/2,
4846
handshake/3,
4947
handshake_continue/3,
@@ -269,43 +267,6 @@ ssl_config(Opts, Role, #state{static_env = InitStatEnv0,
269267
connection_env = CEnv#connection_env{cert_key_alts = CertKeyAlts},
270268
ssl_options = Opts}.
271269

272-
%%--------------------------------------------------------------------
273-
-spec connect(tls_gen_connection | dtls_gen_connection,
274-
ssl:host(), inet:port_number(),
275-
port() | {tuple(), port()}, %% TLS | DTLS
276-
{ssl_options(), #socket_options{},
277-
%% Tracker only needed on server side
278-
undefined},
279-
pid(), tuple(), timeout()) ->
280-
{ok, #sslsocket{}} | {error, ssl:reason()}.
281-
%%
282-
%% Description: Connect to an ssl server.
283-
%%--------------------------------------------------------------------
284-
connect(Connection, Host, Port, Socket, Options, User, CbInfo, Timeout) ->
285-
try Connection:start_fsm(client, Host, Port, Socket, Options, User, CbInfo,
286-
Timeout)
287-
catch
288-
exit:{noproc, _} ->
289-
{error, ssl_not_started}
290-
end.
291-
%%--------------------------------------------------------------------
292-
-spec handshake(tls_gen_connection | dtls_gen_connection,
293-
inet:port_number(), port(),
294-
{ssl_options(), #socket_options{}, list()},
295-
pid(), tuple(), timeout()) ->
296-
{ok, #sslsocket{}} | {error, ssl:reason()}.
297-
%%
298-
%% Description: Performs accept on an ssl listen socket. e.i. performs
299-
%% ssl handshake.
300-
%%--------------------------------------------------------------------
301-
handshake(Connection, Port, Socket, Opts, User, CbInfo, Timeout) ->
302-
try Connection:start_fsm(server, "localhost", Port, Socket, Opts, User,
303-
CbInfo, Timeout)
304-
catch
305-
exit:{noproc, _} ->
306-
{error, ssl_not_started}
307-
end.
308-
309270
%%--------------------------------------------------------------------
310271
-spec handshake(#sslsocket{}, timeout()) -> {ok, #sslsocket{}} |
311272
{ok, #sslsocket{}, map()}| {error, ssl:reason()}.

lib/ssl/src/ssl_trace.erl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -422,7 +422,7 @@ trace_profiles() ->
422422
[{ssl,
423423
[{listen,2}, {connect,3}, {handshake,2}, {close, 1}]},
424424
{ssl_gen_statem,
425-
[{connect, 8}, {close, 2}, {terminate_alert, 1}]},
425+
[{close, 2}, {terminate_alert, 1}]},
426426
{tls_client_connection,
427427
[{initial_hello, 3}]},
428428
{tls_server_connection,

lib/ssl/src/tls_socket.erl

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -114,29 +114,41 @@ accept(ListenSocket, #config{transport_info = {Transport,_,_,_,_} = CbInfo,
114114

115115
upgrade(Socket, #config{transport_info = {Transport,_,_,_,_}= CbInfo,
116116
ssl = SslOptions,
117-
emulated = EmOpts, connection_cb = ConnectionCb}, Timeout) ->
117+
emulated = EmOpts}, Timeout) ->
118118
ok = setopts(Transport, Socket, tls_socket:internal_inet_values()),
119119
case peername(Transport, Socket) of
120-
{ok, {Address, Port}} ->
121-
ssl_gen_statem:connect(ConnectionCb, Address, Port, Socket,
122-
{SslOptions,
123-
emulated_socket_options(EmOpts, #socket_options{}), undefined},
124-
self(), CbInfo, Timeout);
120+
{ok, {Host, Port}} ->
121+
try tls_gen_connection:start_fsm(client, Host, Port, Socket,
122+
{SslOptions,
123+
emulated_socket_options(EmOpts, #socket_options{}), undefined},
124+
self(), CbInfo, Timeout) of
125+
Result ->
126+
Result
127+
catch
128+
exit:{noproc, _} ->
129+
{error, ssl_not_started}
130+
end;
125131
{error, Error} ->
126132
{error, Error}
127133
end.
128134

129-
connect(Address, Port,
135+
connect(Host, Port,
130136
#config{transport_info = CbInfo, inet_user = UserOpts, ssl = SslOpts,
131-
emulated = EmOpts, inet_ssl = SocketOpts, connection_cb = ConnetionCb},
137+
emulated = EmOpts, inet_ssl = SocketOpts},
132138
Timeout) ->
133139
{Transport, _, _, _, _} = CbInfo,
134-
try Transport:connect(Address, Port, SocketOpts, Timeout) of
140+
try Transport:connect(Host, Port, SocketOpts, Timeout) of
135141
{ok, Socket} ->
136-
ssl_gen_statem:connect(ConnetionCb, Address, Port, Socket,
137-
{SslOpts,
138-
emulated_socket_options(EmOpts, #socket_options{}), undefined},
139-
self(), CbInfo, Timeout);
142+
try tls_gen_connection:start_fsm(client, Host, Port, Socket,
143+
{SslOpts,
144+
emulated_socket_options(EmOpts, #socket_options{}), undefined},
145+
self(), CbInfo, Timeout) of
146+
Result ->
147+
Result
148+
catch
149+
exit:{noproc, _} ->
150+
{error, ssl_not_started}
151+
end;
140152
{error, Reason} ->
141153
{error, Reason}
142154
catch

lib/ssl/test/dtls_api_SUITE.erl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -452,8 +452,8 @@ client_restarts(Config) ->
452452

453453
ct:sleep(250),
454454
?CT_LOG("Client second connect: ~p ~p~n", [Socket, CbInfo]),
455-
{ok, NewSocket} = ssl_gen_statem:connect(ConnectionCb, Address, CPort, IntSocket,
456-
SslOpts, self(), CbInfo, infinity),
455+
{ok, NewSocket} = dtls_gen_connection:start_fsm(client, Address, CPort, IntSocket,
456+
SslOpts, self(), CbInfo, infinity),
457457
{replace, NewSocket}
458458
end,
459459

@@ -535,8 +535,8 @@ client_restarts_multiple_acceptors(Config) ->
535535
SslOpts = {SslOpts0, #socket_options{}, undefined},
536536
ct:sleep(250),
537537
?CT_LOG("Client second connect: ~p ~p~n", [Socket, CbInfo]),
538-
{ok, NewSocket} = ssl_gen_statem:connect(ConnectionCb, Address, CPort, IntSocket,
539-
SslOpts, self(), CbInfo, infinity),
538+
{ok, NewSocket} = dtls_gen_connection:start_fsm(client, Address, CPort, IntSocket,
539+
SslOpts, self(), CbInfo, infinity),
540540
{replace, NewSocket}
541541
end,
542542

lib/ssl/test/ssl_trace_SUITE.erl

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -149,8 +149,6 @@ tc_api_profile(Config) ->
149149
tls_server_connection, initial_hello},
150150
{" (client) <- tls_client_connection:initial_hello/3 returned",
151151
tls_client_connection, initial_hello},
152-
{" (client) <- ssl_gen_statem:connect/8 returned",
153-
ssl_gen_statem, connect},
154152
{" (client) <- ssl:connect/3 returned", ssl, connect},
155153
{" (server) <- ssl:handshake/2 returned", ssl, handshake},
156154
{" (client) <- tls_sender:init/3 returned", tls_sender, init},
@@ -161,8 +159,7 @@ tc_api_profile(Config) ->
161159
"rle ('?') -> ssl:listen/2 (*server) Args",
162160
"rle ('?') -> ssl:connect/3 (*client) Args",
163161
"rle ('?') -> tls_sender:init/3 (*server)",
164-
"rle ('?') -> tls_sender:init/3 (*client)",
165-
"api (client) -> ssl_gen_statem:connect/8"]},
162+
"rle ('?') -> tls_sender:init/3 (*client)"]},
166163
TracesAfterDisconnect =
167164
#{
168165
call =>

0 commit comments

Comments
 (0)