From: Holger Weiss <holger@zedat.fu-berlin.de>
Date: Wed, 4 Jun 2014 17:51:45 +0000 (+0200)
Subject: Don't "forget" listener options
X-Git-Tag: 14.07~79^2
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e0e74a9d5e5e4e1a8a6eff8605bdd0d261d4be6f;p=ejabberd

Don't "forget" listener options

If a listener is started or stopped via ejabberd_listener:add_listener/3
or ejabberd_listener:delete_listener/3, the configuration for all
listener modules is updated using the Module:transform_listen_option/2
function for each listener module that exports such a function.
However, for listener modules that don't provide that function (such as
ejabberd_stun), all but one option was dropped.  This is now fixed.

The issue could be triggered e.g. by enabling mod_proxy65 in the modules
section.
---

diff --git a/src/ejabberd_listener.erl b/src/ejabberd_listener.erl
index 02a2f3fbd..d2dc0fb73 100644
--- a/src/ejabberd_listener.erl
+++ b/src/ejabberd_listener.erl
@@ -595,7 +595,7 @@ transform_option({{Port, IP, Transport}, Mod, Opts}) ->
                       try
                           Mod:transform_listen_option(Opt, Acc)
                       catch error:undef ->
-                              Acc
+                              [Opt|Acc]
                       end
               end, [], Opts1),
     TransportOpt = if Transport == tcp -> [];