Decode message before checking for expiration (#1458)
This commit is contained in:
parent
e2665c5da9
commit
7606be93d5
|
@ -570,32 +570,34 @@ pop_offline_messages(Ls, User, Server) ->
|
||||||
Mod = gen_mod:db_mod(LServer, ?MODULE),
|
Mod = gen_mod:db_mod(LServer, ?MODULE),
|
||||||
case Mod:pop_messages(LUser, LServer) of
|
case Mod:pop_messages(LUser, LServer) of
|
||||||
{ok, Rs} ->
|
{ok, Rs} ->
|
||||||
TS = p1_time_compat:timestamp(),
|
|
||||||
Ls ++
|
Ls ++
|
||||||
lists:flatmap(
|
lists:flatmap(
|
||||||
fun(R) ->
|
fun(#offline_msg{expire = Expire} = R) ->
|
||||||
case offline_msg_to_route(LServer, R) of
|
case offline_msg_to_route(LServer, R) of
|
||||||
error -> [];
|
error ->
|
||||||
RouteMsg -> [RouteMsg]
|
[];
|
||||||
|
{route, _From, _To, Msg} = RouteMsg ->
|
||||||
|
case is_expired_message(Expire, Msg) of
|
||||||
|
true -> [];
|
||||||
|
false -> [RouteMsg]
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end,
|
end, Rs);
|
||||||
lists:filter(
|
|
||||||
fun(#offline_msg{packet = Pkt} = R) ->
|
|
||||||
Expire = case R#offline_msg.expire of
|
|
||||||
undefined ->
|
|
||||||
find_x_expire(TS, Pkt);
|
|
||||||
Exp ->
|
|
||||||
Exp
|
|
||||||
end,
|
|
||||||
case Expire of
|
|
||||||
never -> true;
|
|
||||||
TimeStamp -> TS < TimeStamp
|
|
||||||
end
|
|
||||||
end, Rs));
|
|
||||||
_ ->
|
_ ->
|
||||||
Ls
|
Ls
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
is_expired_message(Expire, Pkt) ->
|
||||||
|
TS = p1_time_compat:timestamp(),
|
||||||
|
Exp = case Expire of
|
||||||
|
undefined -> find_x_expire(TS, Pkt);
|
||||||
|
_ -> Expire
|
||||||
|
end,
|
||||||
|
case Exp of
|
||||||
|
never -> false;
|
||||||
|
TimeStamp -> TS >= TimeStamp
|
||||||
|
end.
|
||||||
|
|
||||||
remove_expired_messages(Server) ->
|
remove_expired_messages(Server) ->
|
||||||
LServer = jid:nameprep(Server),
|
LServer = jid:nameprep(Server),
|
||||||
Mod = gen_mod:db_mod(LServer, ?MODULE),
|
Mod = gen_mod:db_mod(LServer, ?MODULE),
|
||||||
|
|
Loading…
Reference in New Issue