diff --git a/src/emqx_channel.erl b/src/emqx_channel.erl index f33b3b337..2774ac264 100644 --- a/src/emqx_channel.erl +++ b/src/emqx_channel.erl @@ -599,7 +599,7 @@ do_publish(PacketId, Msg = #message{qos = ?QOS_2}, ?LOG(warning, "Dropped the qos2 packet ~w " "due to awaiting_rel is full.", [PacketId]), ok = emqx_metrics:inc('packets.publish.dropped'), - handle_out(pubrec, {PacketId, RC}, Channel) + handle_out(disconnect, RC, Channel) end. ensure_quota(_, Channel = #channel{quota = undefined}) -> diff --git a/test/emqx_channel_SUITE.erl b/test/emqx_channel_SUITE.erl index 3249eb991..97b77ca88 100644 --- a/test/emqx_channel_SUITE.erl +++ b/test/emqx_channel_SUITE.erl @@ -209,7 +209,8 @@ t_handle_in_qos2_publish_with_error_return(_) -> {ok, ?PUBREC_PACKET(2, ?RC_NO_MATCHING_SUBSCRIBERS), Channel1} = emqx_channel:handle_in(Publish2, Channel), Publish3 = ?PUBLISH_PACKET(?QOS_2, <<"topic">>, 3, <<"payload">>), - {ok, ?PUBREC_PACKET(3, ?RC_RECEIVE_MAXIMUM_EXCEEDED), Channel1} = + {ok, [{outgoing, ?DISCONNECT_PACKET(?RC_RECEIVE_MAXIMUM_EXCEEDED)}, + {close, receive_maximum_exceeded}], Channel1} = emqx_channel:handle_in(Publish3, Channel1). t_handle_in_puback_ok(_) ->