diff options
author | Evgeny Khramtsov <ekhramtsov@process-one.net> | 2019-05-11 19:27:56 +0300 |
---|---|---|
committer | Evgeny Khramtsov <ekhramtsov@process-one.net> | 2019-05-11 19:27:56 +0300 |
commit | 3d8711f708bbd7bb25b2b8b5a1714d775199a026 (patch) | |
tree | 6e12f43b9f8401b150399a39688b41503148af3e /src/mod_muc_room.erl | |
parent | Handle TCP errors in websockets (diff) |
Avoid late arrival of get_disco_item response
Diffstat (limited to 'src/mod_muc_room.erl')
-rw-r--r-- | src/mod_muc_room.erl | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/mod_muc_room.erl b/src/mod_muc_room.erl index 94c43019..2d386512 100644 --- a/src/mod_muc_room.erl +++ b/src/mod_muc_room.erl @@ -512,7 +512,7 @@ handle_event({set_affiliations, Affiliations}, handle_event(_Event, StateName, StateData) -> {next_state, StateName, StateData}. -handle_sync_event({get_disco_item, Filter, JID, Lang}, _From, StateName, StateData) -> +handle_sync_event({get_disco_item, Filter, JID, Lang, Time}, _From, StateName, StateData) -> Len = maps:size(StateData#state.nicks), Reply = case (Filter == all) or (Filter == Len) or ((Filter /= 0) and (Len /= 0)) of true -> @@ -521,10 +521,17 @@ handle_sync_event({get_disco_item, Filter, JID, Lang}, _From, StateName, StateDa false -> false end, - {reply, Reply, StateName, StateData}; -%% This clause is only for backwards compatibility + CurrentTime = erlang:monotonic_time(millisecond), + if CurrentTime < Time -> + {reply, Reply, StateName, StateData}; + true -> + {next_state, StateName, StateData} + end; +%% These two clauses are only for backward compatibility with nodes running old code handle_sync_event({get_disco_item, JID, Lang}, From, StateName, StateData) -> handle_sync_event({get_disco_item, any, JID, Lang}, From, StateName, StateData); +handle_sync_event({get_disco_item, Filter, JID, Lang}, From, StateName, StateData) -> + handle_sync_event({get_disco_item, Filter, JID, Lang, infinity}, From, StateName, StateData); handle_sync_event(get_config, _From, StateName, StateData) -> {reply, {ok, StateData#state.config}, StateName, |