From 6bac207611ab16438a47b97efd2f40f4efe3cfda Mon Sep 17 00:00:00 2001 From: Steve-Mcl Date: Mon, 7 Dec 2020 12:25:51 +0000 Subject: [PATCH] better handling of server properties --- .../@node-red/nodes/core/network/10-mqtt.js | 35 +++++++++---------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/packages/node_modules/@node-red/nodes/core/network/10-mqtt.js b/packages/node_modules/@node-red/nodes/core/network/10-mqtt.js index 4f5655666..923cce6b2 100644 --- a/packages/node_modules/@node-red/nodes/core/network/10-mqtt.js +++ b/packages/node_modules/@node-red/nodes/core/network/10-mqtt.js @@ -379,24 +379,23 @@ module.exports = function(RED) { node.connected = true; node.log(RED._("mqtt.state.connected",{broker:(node.clientid?node.clientid+"@":"")+node.brokerurl})); if(node.options.protocolVersion == 5 && connack && connack.hasOwnProperty("properties")) { - let mqttServerV5Properties = arguments[0].properties; - if(mqttServerV5Properties) { - //node.serverProperties = mqttServerV5Properties; //assign all props, below, square them up. - setIntProp(mqttServerV5Properties, node.serverProperties, "topicAliasMaximum", 1); - setIntProp(mqttServerV5Properties, node.serverProperties, "receiveMaximum", 0); - setIntProp(mqttServerV5Properties, node.serverProperties, "sessionExpiryInterval", 0, 0xFFFFFFFF); - setIntProp(mqttServerV5Properties, node.serverProperties, "maximumQoS", 0, 2); - setBoolProp(mqttServerV5Properties, node.serverProperties, "retainAvailable"); - setBoolProp(mqttServerV5Properties, node.serverProperties, "wildcardSubscriptionAvailable"); - setBoolProp(mqttServerV5Properties, node.serverProperties, "subscriptionIdentifiersAvailable"); - setBoolProp(mqttServerV5Properties, node.serverProperties, "sharedSubscriptionAvailable"); - setIntProp(mqttServerV5Properties, node.serverProperties, "maximumPacketSize", 0); - setIntProp(mqttServerV5Properties, node.serverProperties, "serverKeepAlive"); - setStrProp(mqttServerV5Properties, node.serverProperties, "responseInformation"); - setStrProp(mqttServerV5Properties, node.serverProperties, "serverReference"); - setStrProp(mqttServerV5Properties, node.serverProperties, "assignedClientIdentifier"); - setStrProp(mqttServerV5Properties, node.serverProperties, "reasonString"); - setUserProperties(mqttServerV5Properties, node.serverProperties); + if(typeof connack.properties == "object") { + //clean & assign all props sent from server. + setIntProp(connack.properties, node.serverProperties, "topicAliasMaximum", 1); + setIntProp(connack.properties, node.serverProperties, "receiveMaximum", 0); + setIntProp(connack.properties, node.serverProperties, "sessionExpiryInterval", 0, 0xFFFFFFFF); + setIntProp(connack.properties, node.serverProperties, "maximumQoS", 0, 2); + setBoolProp(connack.properties, node.serverProperties, "retainAvailable"); + setBoolProp(connack.properties, node.serverProperties, "wildcardSubscriptionAvailable"); + setBoolProp(connack.properties, node.serverProperties, "subscriptionIdentifiersAvailable"); + setBoolProp(connack.properties, node.serverProperties, "sharedSubscriptionAvailable"); + setIntProp(connack.properties, node.serverProperties, "maximumPacketSize", 0); + setIntProp(connack.properties, node.serverProperties, "serverKeepAlive"); + setStrProp(connack.properties, node.serverProperties, "responseInformation"); + setStrProp(connack.properties, node.serverProperties, "serverReference"); + setStrProp(connack.properties, node.serverProperties, "assignedClientIdentifier"); + setStrProp(connack.properties, node.serverProperties, "reasonString"); + setUserProperties(connack.properties, node.serverProperties); debug("MQTTBrokerNode: ⬆ CONNECTED. node.serverProperties ==> ", node.serverProperties ); } }