From d409e25e76b9af43ca38034c1a884df57f6fcdbb Mon Sep 17 00:00:00 2001 From: JianBo He Date: Fri, 27 Dec 2019 11:27:55 +0800 Subject: [PATCH] Fix dequeue error --- src/emqx_session.erl | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/emqx_session.erl b/src/emqx_session.erl index 24149e0b4..2b719f699 100644 --- a/src/emqx_session.erl +++ b/src/emqx_session.erl @@ -1033,12 +1033,16 @@ drain_q(Cnt, Msgs, Q) -> case emqx_message:is_expired(Msg) of true -> ok = emqx_metrics:inc('messages.expired'), - drain_q(Cnt-1, Msgs, Q1); + drain_q(Cnt, Msgs, Q1); false -> - drain_q(Cnt-1, [Msg|Msgs], Q1) + drain_q(acc_cnt(Msg, Cnt), [Msg|Msgs], Q1) end end. +-compile({inline, [acc_cnt/2]}). +acc_cnt(#message{qos = ?QOS_0}, Cnt) -> Cnt; +acc_cnt(_Msg, Cnt) -> Cnt - 1. + %%------------------------------------------------------------------------------ %% Ensure timers