Merge pull request #3322 from emqx/master
Auto-pull-request-by-2020-03-17
This commit is contained in:
commit
4ba3c343f0
|
@ -1182,14 +1182,22 @@ enrich_connack_caps(AckProps, #channel{conninfo = #{proto_ver := ?MQTT_PROTO_V
|
||||||
shared_subscription := Shared,
|
shared_subscription := Shared,
|
||||||
wildcard_subscription := Wildcard
|
wildcard_subscription := Wildcard
|
||||||
} = emqx_mqtt_caps:get_caps(Zone),
|
} = emqx_mqtt_caps:get_caps(Zone),
|
||||||
AckProps#{'Maximum-QoS' => MaxQoS,
|
NAckProps = AckProps#{'Retain-Available' => flag(Retain),
|
||||||
'Retain-Available' => flag(Retain),
|
'Maximum-Packet-Size' => MaxPktSize,
|
||||||
'Maximum-Packet-Size' => MaxPktSize,
|
'Topic-Alias-Maximum' => MaxAlias,
|
||||||
'Topic-Alias-Maximum' => MaxAlias,
|
'Wildcard-Subscription-Available' => flag(Wildcard),
|
||||||
'Wildcard-Subscription-Available' => flag(Wildcard),
|
'Subscription-Identifier-Available' => 1,
|
||||||
'Subscription-Identifier-Available' => 1,
|
'Shared-Subscription-Available' => flag(Shared)
|
||||||
'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.
|
enrich_connack_caps(AckProps, _Channel) -> AckProps.
|
||||||
|
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
|
|
|
@ -522,8 +522,7 @@ t_enrich_connack_caps(_) ->
|
||||||
'Topic-Alias-Maximum' := 10,
|
'Topic-Alias-Maximum' := 10,
|
||||||
'Wildcard-Subscription-Available' := 1,
|
'Wildcard-Subscription-Available' := 1,
|
||||||
'Subscription-Identifier-Available' := 1,
|
'Subscription-Identifier-Available' := 1,
|
||||||
'Shared-Subscription-Available' := 1,
|
'Shared-Subscription-Available' := 1
|
||||||
'Maximum-QoS' := ?QOS_2
|
|
||||||
}, AckProps),
|
}, AckProps),
|
||||||
ok = meck:unload(emqx_mqtt_caps).
|
ok = meck:unload(emqx_mqtt_caps).
|
||||||
|
|
||||||
|
|
|
@ -475,7 +475,7 @@ t_connack_max_qos_allowed(_) ->
|
||||||
|
|
||||||
{ok, Client5} = emqtt:start_link([{proto_ver, v5}]),
|
{ok, Client5} = emqtt:start_link([{proto_ver, v5}]),
|
||||||
{ok, Connack5} = emqtt:connect(Client5),
|
{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),
|
ok = emqtt:disconnect(Client5),
|
||||||
waiting_client_process_exit(Client5),
|
waiting_client_process_exit(Client5),
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue