aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristophe Romain <christophe.romain@process-one.net>2017-09-27 09:29:04 +0200
committerChristophe Romain <christophe.romain@process-one.net>2017-09-27 09:29:04 +0200
commitcf09ed2df24ce5df48eb4a8e4686c6e780668137 (patch)
tree447c9823d3a792127756ecee867e443285165cff /src
parentmod_http_upload: Don't ignore 'custom_headers' (diff)
PubSub: fix node_options, default options only apply on first plugin
Diffstat (limited to 'src')
-rw-r--r--src/mod_pubsub.erl24
1 files changed, 8 insertions, 16 deletions
diff --git a/src/mod_pubsub.erl b/src/mod_pubsub.erl
index 668dc9bfb..95ab5ec4b 100644
--- a/src/mod_pubsub.erl
+++ b/src/mod_pubsub.erl
@@ -259,10 +259,9 @@ init([ServerHost, Opts]) ->
end,
{Plugins, NodeTree, PepMapping} = init_plugins(Host, ServerHost, Opts),
DefaultModule = plugin(Host, hd(Plugins)),
- BaseOptions = DefaultModule:options(),
- DefaultNodeCfg = filter_node_options(
+ DefaultNodeCfg = merge_config(
gen_mod:get_opt(default_node_config, Opts, []),
- BaseOptions),
+ DefaultModule:options()),
lists:foreach(
fun(H) ->
T = gen_mod:get_module_proc(H, config),
@@ -3091,10 +3090,10 @@ get_option(Options, Var, Def) ->
-spec node_options(host(), binary()) -> [{atom(), any()}].
node_options(Host, Type) ->
- case config(Host, default_node_config) of
- undefined -> node_plugin_options(Host, Type);
- [] -> node_plugin_options(Host, Type);
- Config -> Config
+ DefaultOpts = node_plugin_options(Host, Type),
+ case config(Host, plugins) of
+ [Type|_] -> config(Host, default_node_config, DefaultOpts);
+ _ -> DefaultOpts
end.
-spec node_plugin_options(host(), binary()) -> [{atom(), any()}].
@@ -3108,13 +3107,6 @@ node_plugin_options(Host, Type) ->
Result
end.
--spec filter_node_options([{atom(), any()}], [{atom(), any()}]) -> [{atom(), any()}].
-filter_node_options(Options, BaseOptions) ->
- lists:foldl(fun({Key, Val}, Acc) ->
- DefaultValue = proplists:get_value(Key, Options, Val),
- [{Key, DefaultValue}|Acc]
- end, [], BaseOptions).
-
-spec node_owners_action(host(), binary(), nodeIdx(), [ljid()]) -> [ljid()].
node_owners_action(Host, Type, Nidx, []) ->
case node_action(Host, Type, get_node_affiliations, [Nidx]) of
@@ -3219,11 +3211,11 @@ set_configure(Host, Node, From, Config, Lang) ->
end.
-spec merge_config([proplists:property()], [proplists:property()]) -> [proplists:property()].
-merge_config(Config1, Config2) ->
+merge_config(CustomConfig, DefaultConfig) ->
lists:foldl(
fun({Opt, Val}, Acc) ->
lists:keystore(Opt, 1, Acc, {Opt, Val})
- end, Config2, Config1).
+ end, DefaultConfig, CustomConfig).
-spec decode_node_config(undefined | xdata(), binary(), binary()) ->
pubsub_node_config:result() |