diff --git a/src/mod_last.erl b/src/mod_last.erl index b5bca2cd4..a4c984dd1 100644 --- a/src/mod_last.erl +++ b/src/mod_last.erl @@ -153,19 +153,28 @@ get_last(LUser, LServer) -> end. get_last_iq(IQ, SubEl, LUser, LServer) -> - case get_last(LUser, LServer) of - {error, _Reason} -> - IQ#iq{type = error, sub_el = [SubEl, ?ERR_INTERNAL_SERVER_ERROR]}; - not_found -> - IQ#iq{type = error, sub_el = [SubEl, ?ERR_SERVICE_UNAVAILABLE]}; - {ok, TimeStamp, Status} -> - TimeStamp2 = now_to_seconds(now()), - Sec = TimeStamp2 - TimeStamp, + case ejabberd_sm:get_user_resources(LUser, LServer) of + [] -> + case get_last(LUser, LServer) of + {error, _Reason} -> + IQ#iq{type = error, sub_el = [SubEl, ?ERR_INTERNAL_SERVER_ERROR]}; + not_found -> + IQ#iq{type = error, sub_el = [SubEl, ?ERR_SERVICE_UNAVAILABLE]}; + {ok, TimeStamp, Status} -> + TimeStamp2 = now_to_seconds(now()), + Sec = TimeStamp2 - TimeStamp, + IQ#iq{type = result, + sub_el = [{xmlelement, "query", + [{"xmlns", ?NS_LAST}, + {"seconds", integer_to_list(Sec)}], + [{xmlcdata, Status}]}]} + end; + _ -> IQ#iq{type = result, sub_el = [{xmlelement, "query", [{"xmlns", ?NS_LAST}, - {"seconds", integer_to_list(Sec)}], - [{xmlcdata, Status}]}]} + {"seconds", "0"}], + []}]} end. on_presence_update(User, Server, _Resource, Status) -> diff --git a/src/mod_last_odbc.erl b/src/mod_last_odbc.erl index 7a806e28f..2cc140059 100644 --- a/src/mod_last_odbc.erl +++ b/src/mod_last_odbc.erl @@ -151,19 +151,28 @@ get_last(LUser, LServer) -> end. get_last_iq(IQ, SubEl, LUser, LServer) -> - case get_last(LUser, LServer) of - {error, _Reason} -> - IQ#iq{type = error, sub_el = [SubEl, ?ERR_INTERNAL_SERVER_ERROR]}; - not_found -> - IQ#iq{type = error, sub_el = [SubEl, ?ERR_SERVICE_UNAVAILABLE]}; - {ok, TimeStamp, Status} -> - TimeStamp2 = now_to_seconds(now()), - Sec = TimeStamp2 - TimeStamp, + case ejabberd_sm:get_user_resources(LUser, LServer) of + [] -> + case get_last(LUser, LServer) of + {error, _Reason} -> + IQ#iq{type = error, sub_el = [SubEl, ?ERR_INTERNAL_SERVER_ERROR]}; + not_found -> + IQ#iq{type = error, sub_el = [SubEl, ?ERR_SERVICE_UNAVAILABLE]}; + {ok, TimeStamp, Status} -> + TimeStamp2 = now_to_seconds(now()), + Sec = TimeStamp2 - TimeStamp, + IQ#iq{type = result, + sub_el = [{xmlelement, "query", + [{"xmlns", ?NS_LAST}, + {"seconds", integer_to_list(Sec)}], + [{xmlcdata, Status}]}]} + end; + _ -> IQ#iq{type = result, sub_el = [{xmlelement, "query", [{"xmlns", ?NS_LAST}, - {"seconds", integer_to_list(Sec)}], - [{xmlcdata, Status}]}]} + {"seconds", "0"}], + []}]} end. on_presence_update(User, Server, _Resource, Status) ->