]> granicus.if.org Git - ejabberd/commitdiff
Do not try to start ezlib application too frequently
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>
Tue, 16 Jan 2018 15:06:31 +0000 (18:06 +0300)
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>
Tue, 16 Jan 2018 15:06:31 +0000 (18:06 +0300)
This may overload Erlang applicaton controller

src/ejabberd_listener.erl
src/xmpp_socket.erl

index 7cad65804662d16fe42926df527ae9b9b0bdf613..56843e5b5e54f95b66fce1a3b8d19ef4a81119ee 100644 (file)
@@ -576,6 +576,7 @@ transform_options(Opt, Opts) ->
 validate_module_options(Module, Opts) ->
     try Module:listen_opt_type('') of
        _ ->
+           maybe_start_zlib(Opts),
            lists:filtermap(
              fun({Opt, Val}) ->
                      case validate_module_option(Module, Opt, Val) of
@@ -664,5 +665,13 @@ all_zero_ip(Opts) ->
        false -> {0,0,0,0}
     end.
 
+maybe_start_zlib(Opts) ->
+    case proplists:get_bool(zlib, Opts) of
+       true ->
+           ejabberd:start_app(ezlib);
+       false ->
+           ok
+    end.
+
 opt_type(listen) -> fun validate_cfg/1;
 opt_type(_) -> [listen].
index 358a3adbc60220e2916b909a992090ce05d7a0fd..40984ac30771de21c7c9becad83792db20cf3a03 100644 (file)
@@ -166,7 +166,6 @@ compress(SocketData) -> compress(SocketData, undefined).
 compress(#socket_state{receiver = undefined,
                       sockmod = SockMod,
                       socket = Socket} = SocketData, Data) ->
-    ejabberd:start_app(ezlib),
     {ok, ZlibSocket} = ezlib:enable_zlib(SockMod, Socket),
     case Data of
        undefined -> ok;