aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlexey Shchepin <alexey@process-one.net>2008-04-27 19:06:34 +0000
committerAlexey Shchepin <alexey@process-one.net>2008-04-27 19:06:34 +0000
commit85d3b27d7158775c54734175e43a331cf230d26a (patch)
treeefdb46106963705ac4c47e9d38f1c7e4a40c869e /src
parent* src/mod_shared_roster.erl: Fix for new registered accounts not (diff)
* src/mod_muc/mod_muc_room.erl: Fixed room shaper processing
SVN Revision: 1305
Diffstat (limited to 'src')
-rw-r--r--src/mod_muc/mod_muc_room.erl44
1 files changed, 20 insertions, 24 deletions
diff --git a/src/mod_muc/mod_muc_room.erl b/src/mod_muc/mod_muc_room.erl
index 10b7d8a75..592844dcd 100644
--- a/src/mod_muc/mod_muc_room.erl
+++ b/src/mod_muc/mod_muc_room.erl
@@ -694,31 +694,27 @@ code_change(_OldVsn, StateName, StateData, _Extra) ->
%% {stop, Reason, NewStateData}
%%----------------------------------------------------------------------
handle_info({process_user_presence, From}, normal_state = _StateName, StateData) ->
- Activity = get_user_activity(From, StateData),
- Now = now_to_usec(now()),
- {Nick, Packet} = Activity#activity.presence,
- NewActivity = Activity#activity{presence_time = Now,
- presence = undefined},
- StateData1 =
- StateData#state{
- activity = ?DICT:store(
- jlib:jid_tolower(From),
- NewActivity,
- StateData#state.activity)},
- process_presence(From, Nick, Packet, StateData1);
+ RoomQueueEmpty = queue:is_empty(StateData#state.room_queue),
+ RoomQueue = queue:in({presence, From}, StateData#state.room_queue),
+ StateData1 = StateData#state{room_queue = RoomQueue},
+ if
+ RoomQueueEmpty ->
+ StateData2 = prepare_room_queue(StateData1),
+ {next_state, normal_state, StateData2};
+ true ->
+ {next_state, normal_state, StateData1}
+ end;
handle_info({process_user_message, From}, normal_state = _StateName, StateData) ->
- Activity = get_user_activity(From, StateData),
- Now = now_to_usec(now()),
- Packet = Activity#activity.message,
- NewActivity = Activity#activity{message_time = Now,
- message = undefined},
- StateData1 =
- StateData#state{
- activity = ?DICT:store(
- jlib:jid_tolower(From),
- NewActivity,
- StateData#state.activity)},
- process_groupchat_message(From, Packet, StateData1);
+ RoomQueueEmpty = queue:is_empty(StateData#state.room_queue),
+ RoomQueue = queue:in({message, From}, StateData#state.room_queue),
+ StateData1 = StateData#state{room_queue = RoomQueue},
+ if
+ RoomQueueEmpty ->
+ StateData2 = prepare_room_queue(StateData1),
+ {next_state, normal_state, StateData2};
+ true ->
+ {next_state, normal_state, StateData1}
+ end;
handle_info(process_room_queue, normal_state = StateName, StateData) ->
case queue:out(StateData#state.room_queue) of
{{value, {message, From}}, RoomQueue} ->