diff --git a/src/emqttd_retainer.erl b/src/emqttd_retainer.erl index 57f586453..e0bb631ba 100644 --- a/src/emqttd_retainer.erl +++ b/src/emqttd_retainer.erl @@ -95,12 +95,16 @@ init([]) -> StatsFun = emqttd_stats:statsfun('retained/count', 'retained/max'), %% One second {ok, StatsTimer} = timer:send_interval(timer:seconds(1), stats), - %% Five minutes - {ok, ExpireTimer} = timer:send_interval(timer:minutes(5), expire), - {ok, #state{stats_fun = StatsFun, - expired_after = env(expired_after), - stats_timer = StatsTimer, - expire_timer = ExpireTimer}}. + State = #state{stats_fun = StatsFun, stats_timer = StatsTimer}, + {ok, init_expire_timer(env(expired_after), State)}. + +init_expire_timer(0, State) -> + State; +init_expire_timer(undefined, State) -> + State; +init_expire_timer(Secs, State) -> + {ok, Timer} = timer:send_interval(timer:seconds(Secs), expire), + State#state{expired_after = Secs, expire_timer = Timer}. handle_call(Req, _From, State) -> ?UNEXPECTED_REQ(Req, State).