Merge pull request #3322 from emqx/master

Auto-pull-request-by-2020-03-17
This commit is contained in:
turtleDeng 2020-03-17 18:11:50 +08:00 committed by GitHub
commit 4ba3c343f0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 11 deletions

View File

@ -1182,14 +1182,22 @@ enrich_connack_caps(AckProps, #channel{conninfo = #{proto_ver := ?MQTT_PROTO_V
shared_subscription := Shared,
wildcard_subscription := Wildcard
} = emqx_mqtt_caps:get_caps(Zone),
AckProps#{'Maximum-QoS' => MaxQoS,
'Retain-Available' => flag(Retain),
'Maximum-Packet-Size' => MaxPktSize,
'Topic-Alias-Maximum' => MaxAlias,
'Wildcard-Subscription-Available' => flag(Wildcard),
'Subscription-Identifier-Available' => 1,
'Shared-Subscription-Available' => flag(Shared)
};
NAckProps = AckProps#{'Retain-Available' => flag(Retain),
'Maximum-Packet-Size' => MaxPktSize,
'Topic-Alias-Maximum' => MaxAlias,
'Wildcard-Subscription-Available' => flag(Wildcard),
'Subscription-Identifier-Available' => 1,
'Shared-Subscription-Available' => flag(Shared)
},
%% MQTT 5.0 - 3.2.2.3.4:
%% It is a Protocol Error to include Maximum QoS more than once,
%% or to have a value other than 0 or 1. If the Maximum QoS is absent,
%% the Client uses a Maximum QoS of 2.
case MaxQoS =:= 2 of
true -> NAckProps;
_ -> NAckProps#{'Maximum-QoS' => MaxQoS}
end;
enrich_connack_caps(AckProps, _Channel) -> AckProps.
%%--------------------------------------------------------------------

View File

@ -522,8 +522,7 @@ t_enrich_connack_caps(_) ->
'Topic-Alias-Maximum' := 10,
'Wildcard-Subscription-Available' := 1,
'Subscription-Identifier-Available' := 1,
'Shared-Subscription-Available' := 1,
'Maximum-QoS' := ?QOS_2
'Shared-Subscription-Available' := 1
}, AckProps),
ok = meck:unload(emqx_mqtt_caps).

View File

@ -475,7 +475,7 @@ t_connack_max_qos_allowed(_) ->
{ok, Client5} = emqtt:start_link([{proto_ver, v5}]),
{ok, Connack5} = emqtt:connect(Client5),
?assertEqual(2, maps:get('Maximum-QoS', Connack5)), %% [MQTT-3.2.2-9]
?assertEqual(undefined, maps:get('Maximum-QoS', Connack5, undefined)), %% [MQTT-3.2.2-9]
ok = emqtt:disconnect(Client5),
waiting_client_process_exit(Client5),