From b8a5ff2314cb8ff1cab74b94c7ea442cefcccb63 Mon Sep 17 00:00:00 2001 From: Feng Date: Tue, 12 Apr 2016 20:34:41 +0800 Subject: [PATCH] fix issue #503 --- src/emqttd_retainer.erl | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) 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).