aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-12-28 17:24:23 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-12-28 17:24:23 +0300
commit529d6d8a93d9c554fd3c12a84a7c8eddd65aff41 (patch)
tree77b832630ade7f01e8d4fedfbf4e565a1881af7e /src
parentLet mix pass compile ejabberd as dependency (diff)
Return default certificate on domain mismatch
Diffstat (limited to 'src')
-rw-r--r--src/ejabberd_pkix.erl20
1 files changed, 17 insertions, 3 deletions
diff --git a/src/ejabberd_pkix.erl b/src/ejabberd_pkix.erl
index 9b9c51287..87fa364bf 100644
--- a/src/ejabberd_pkix.erl
+++ b/src/ejabberd_pkix.erl
@@ -28,7 +28,7 @@
%% API
-export([start_link/0, add_certfile/1, format_error/1, opt_type/1,
get_certfile/1, try_certfile/1, route_registered/1,
- config_reloaded/0, certs_dir/0, ca_file/0]).
+ config_reloaded/0, certs_dir/0, ca_file/0, get_default_certfile/0]).
%% gen_server callbacks
-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
terminate/2, code_change/3]).
@@ -132,16 +132,30 @@ get_certfile(Domain) ->
[{_, Path}|_] ->
{ok, Path};
[] ->
- error
+ get_default_certfile()
end;
_ ->
- error
+ get_default_certfile()
end;
[{_, Path}|_] ->
{ok, Path}
end
end.
+-spec get_default_certfile() -> {ok, binary()} | error.
+get_default_certfile() ->
+ case ets:first(?MODULE) of
+ '$end_of_table' ->
+ error;
+ Domain ->
+ case ets:lookup(?MODULE, Domain) of
+ [{_, Path}|_] ->
+ {ok, Path};
+ [] ->
+ error
+ end
+ end.
+
start_link() ->
gen_server:start_link({local, ?MODULE}, ?MODULE, [], []).