diff options
| -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 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)). |
