diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/gen_server2.erl | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/gen_server2.erl b/src/gen_server2.erl index 56b2720cac..23494399d2 100644 --- a/src/gen_server2.erl +++ b/src/gen_server2.erl @@ -636,8 +636,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)). |
