]> granicus.if.org Git - ejabberd/commitdiff
* src/mod_muc/mod_muc_room.erl: Fixed room shaper processing
authorAlexey Shchepin <alexey@process-one.net>
Sun, 27 Apr 2008 19:06:34 +0000 (19:06 +0000)
committerAlexey Shchepin <alexey@process-one.net>
Sun, 27 Apr 2008 19:06:34 +0000 (19:06 +0000)
SVN Revision: 1305

ChangeLog
src/mod_muc/mod_muc_room.erl

index 425f895b73a316fd299429593fdae0338734cb0c..48e89305aeaf26cc8c6e34d7c89bdb8bd75d9572 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2008-04-27  Alexey Shchepin  <alexey@process-one.net>
+
+       * src/mod_muc/mod_muc_room.erl: Fixed room shaper processing
+
 2008-04-26  Badlop  <badlop@process-one.net>
 
        * src/mod_shared_roster.erl: Fix for new registered accounts not
index 10b7d8a7516bf94bf4677eb3da7ee032f8c223d8..592844dcd8ece1d4a90a26878fc71dceae205391 100644 (file)
@@ -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} ->