From 24f8c3a39189e2b27d19e9f6a9bdcd2074874381 Mon Sep 17 00:00:00 2001 From: HeeeJianBo Date: Wed, 27 Mar 2019 21:00:13 +0800 Subject: [PATCH] Fix drain the session process mailbox handling err --- src/emqx_session.erl | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/emqx_session.erl b/src/emqx_session.erl index df3da8258..3ef9107a7 100644 --- a/src/emqx_session.erl +++ b/src/emqx_session.erl @@ -839,8 +839,14 @@ drain_m(Cnt, Msgs) when Cnt =< 0 -> lists:reverse(Msgs); drain_m(Cnt, Msgs) -> receive - {dispatch, Topic, Msg} -> - drain_m(Cnt-1, [{Topic, Msg}|Msgs]) + {dispatch, Topic, Msg} when is_record(Msg, message)-> + drain_m(Cnt-1, [{Topic, Msg} | Msgs]); + {dispatch, Topic, InMsgs} when is_list(InMsgs) -> + Msgs1 = lists:foldl( + fun(Msg, Acc) -> + [{Topic, Msg} | Acc] + end, Msgs, InMsgs), + drain_m(Cnt-length(InMsgs), Msgs1) after 0 -> lists:reverse(Msgs) end.