提交 5b721530 编写于 作者: 如梦技术's avatar 如梦技术 🐛

梳理更新记录。

上级 7ef7f6fa
......@@ -4,7 +4,8 @@
### v1.2.2 - 2021-12-26
- :sparkles: mica-mqtt server 添加发布权限接口,无权限直接断开连接,避免高级别 qos 重试浪费资源。
- :sparkles: mica-mqtt-broker 优化节点信息存储
- :sparkles: mqtt client 抽象 IMqttClientSession 接口。
- :sparkles: mica-mqtt client 重复订阅优化。感谢 `@一片小雨滴`
- :sparkles: mica-mqtt client 抽象 IMqttClientSession 接口。
- :bug: 修复重构 AbstractMqttMessageDispatcher 保持跟 mica-mqtt-broker 逻辑一致 gitee #I4MA6A 感谢 `@胡萝博`
- :arrow_up: mica-mqtt-example 升级 log4j2 到 2.17.0
......
......@@ -33,8 +33,9 @@ public interface IMqttServerPublishPermission {
* @param clientId 客户端 id
* @param topic topic
* @param qoS MqttQoS
* @param isRetain 是否保留消息
* @return 否有发布权限
*/
boolean hasPermission(ChannelContext context, String clientId, String topic, MqttQoS qoS);
boolean hasPermission(ChannelContext context, String clientId, String topic, MqttQoS qoS, boolean isRetain);
}
......@@ -199,7 +199,7 @@ public class DefaultMqttServerProcessor implements MqttServerProcessor {
MqttPublishVariableHeader variableHeader = message.variableHeader();
String topicName = variableHeader.topicName();
// 1. 判断是否有发布权限,没有权限则断开 mqtt 连接 mqtt 5.x qos1、qos2 可以响应 reasonCode
if (publishPermission != null && !publishPermission.hasPermission(context, clientId, topicName, mqttQoS)) {
if (publishPermission != null && !publishPermission.hasPermission(context, clientId, topicName, mqttQoS, fixedHeader.isRetain())) {
Tio.remove(context, "Mqtt clientId:" + clientId + " publish topic: " + topicName + " no permission.");
return;
}
......@@ -428,7 +428,7 @@ public class DefaultMqttServerProcessor implements MqttServerProcessor {
message.setPayload(payload);
}
message.setMessageType(MessageType.UP_STREAM);
message.setRetain(fixedHeader.isRetain());
message.setRetain(isRetain);
message.setDup(fixedHeader.isDup());
message.setTimestamp(System.currentTimeMillis());
Node clientNode = context.getClientNode();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册