mirror of https://github.com/node-red/node-red.git
Guard against null client in MQTT nodes
Fixes #130 There was a timing window where a client could connect to a broker just as new flows were deployed that would cause the on-connect callback to be called after client has been set to null. This caused an NPE. The fix is to check client isn't null in the event handler.pull/139/head
parent
10b7f402c3
commit
6b3010f95b
|
@ -84,21 +84,22 @@ module.exports = {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
client.on('connect',function() {
|
client.on('connect',function() {
|
||||||
|
if (client) {
|
||||||
util.log('[mqtt] connected to broker tcp://'+broker+':'+port);
|
util.log('[mqtt] connected to broker tcp://'+broker+':'+port);
|
||||||
|
|
||||||
connecting = false;
|
connecting = false;
|
||||||
for (var s in subscriptions) {
|
for (var s in subscriptions) {
|
||||||
var topic = subscriptions[s].topic;
|
var topic = subscriptions[s].topic;
|
||||||
var qos = subscriptions[s].qos;
|
var qos = subscriptions[s].qos;
|
||||||
var callback = subscriptions[s].callback;
|
var callback = subscriptions[s].callback;
|
||||||
client.subscribe(topic,qos);
|
client.subscribe(topic,qos);
|
||||||
}
|
}
|
||||||
//console.log("connected - publishing",queue.length,"messages");
|
//console.log("connected - publishing",queue.length,"messages");
|
||||||
while(queue.length) {
|
while(queue.length) {
|
||||||
var msg = queue.shift();
|
var msg = queue.shift();
|
||||||
//console.log(msg);
|
//console.log(msg);
|
||||||
client.publish(msg.topic,msg.payload,msg.qos,msg.retain);
|
client.publish(msg.topic,msg.payload,msg.qos,msg.retain);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
client.on('connectionlost', function(err) {
|
client.on('connectionlost', function(err) {
|
||||||
|
|
Loading…
Reference in New Issue