summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/gen_server2.erl11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/gen_server2.erl b/src/gen_server2.erl
index fd0e6553b5..ffc075da7f 100644
--- a/src/gen_server2.erl
+++ b/src/gen_server2.erl
@@ -633,8 +633,15 @@ extend_backoff({backoff, InitialTimeout, MinimumTimeout, DesiredHibPeriod}) ->
%%% The MAIN loop.
%%% ---------------------------------------------------
loop(GS2State = #gs2_state { time = hibernate,
- timeout_state = undefined }) ->
- pre_hibernate(GS2State);
+ timeout_state = undefined,
+ queue = Queue }) ->
+ case priority_queue:is_empty(Queue) of
+ true ->
+ pre_hibernate(GS2State);
+ false ->
+ process_next_msg(GS2State)
+ end;
+
loop(GS2State) ->
process_next_msg(drain(GS2State)).