]> granicus.if.org Git - ejabberd/commitdiff
Merge changeset 1305 from ejabberd trunk.
authorBadlop <badlop@process-one.net>
Mon, 28 Apr 2008 18:44:28 +0000 (18:44 +0000)
committerBadlop <badlop@process-one.net>
Mon, 28 Apr 2008 18:44:28 +0000 (18:44 +0000)
2008-04-27  Alexey Shchepin  <alexey@process-one.net>

* src/mod_muc/mod_muc_room.erl: Fixed room shaper processing

SVN Revision: 1309

ChangeLog
src/mod_muc/mod_muc_room.erl

index 92511bae45c2bf1b4905d85b0aa96d1d4b614dbe..65e29aa1435bca277b10b3f750dfbac0184cce92 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,10 @@
 
        * doc/guide.tex: Document the option max_s2s_connections
 
+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 30a9fa2580b0be1c83f8eb63a51b1b6aaf935ad1..29807ff091820ecb7ae99e08d0445378f14d71c0 100644 (file)
@@ -697,31 +697,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} ->