Skip to content

Commit

Permalink
Simplify the options filtering code in cowboy_ssl_transport
Browse files Browse the repository at this point in the history
  • Loading branch information
Ali Sabil committed Mar 21, 2012
1 parent 7e74582 commit 98c5828
Showing 1 changed file with 8 additions and 21 deletions.
29 changes: 8 additions & 21 deletions src/cowboy_ssl_transport.erl
Expand Up @@ -67,30 +67,17 @@ listen(Opts) ->
{port, Port} = lists:keyfind(port, 1, Opts),
Backlog = proplists:get_value(backlog, Opts, 1024),
{certfile, CertFile} = lists:keyfind(certfile, 1, Opts),
KeyFileOpts =
case lists:keyfind(keyfile, 1, Opts) of
false -> [];
KeyFile -> [KeyFile]
end,
PasswordOpts =
case lists:keyfind(password, 1, Opts) of
false -> [];
Password -> [Password]
end,

ListenOpts0 = [binary, {active, false},
{backlog, Backlog}, {packet, raw}, {reuseaddr, true},
{certfile, CertFile}],
ListenOpts1 =
case lists:keyfind(ip, 1, Opts) of
false -> ListenOpts0;
Ip -> [Ip|ListenOpts0]
end,
ListenOpts2 =
case lists:keyfind(cacertfile, 1, Opts) of
false -> ListenOpts1;
CACertFile -> [CACertFile|ListenOpts1]
end,
ListenOpts = ListenOpts2 ++ KeyFileOpts ++ PasswordOpts,
ListenOpts = lists:foldl(fun
({ip, _} = Ip, Acc) -> [Ip | Acc];
({keyfile, _} = KeyFile, Acc) -> [KeyFile | Acc];
({password, _} = Password, Acc) -> [Password | Acc];
({cacertfile, _} = CACertFile, Acc) -> [CACertFile | Acc];
(_, Acc) -> Acc
end, ListenOpts0, Opts),
ssl:listen(Port, ListenOpts).

%% @doc Accept an incoming connection on a listen socket.
Expand Down

0 comments on commit 98c5828

Please sign in to comment.