make sure MQTT client closes if redeploy during reconnect

to close #1193
Thanks @tedhuang for the excellent problem determination
This commit is contained in:
Dave Conway-Jones 2017-03-10 20:12:52 +00:00
parent 36ab16c1ed
commit 834e894b1d
2 changed files with 16 additions and 15 deletions

View File

@ -35,7 +35,7 @@
</script> </script>
<script type="text/x-red" data-help-name="mqtt in"> <script type="text/x-red" data-help-name="mqtt in">
<p>Connects to a broker and subscribes to the specified topic.</p> <p>Connects to a MQTT broker and subscribes to the specified topic.</p>
<p>Outputs a message with the properties:</p> <p>Outputs a message with the properties:</p>
<ul> <ul>
<li><code>msg.topic</code></li> <li><code>msg.topic</code></li>
@ -107,6 +107,7 @@
<p>Connects to a MQTT broker and publishes messages.</p> <p>Connects to a MQTT broker and publishes messages.</p>
<p><code>msg.payload</code> is used as the payload of the published message. <p><code>msg.payload</code> is used as the payload of the published message.
If it contains an Object it will be converted to JSON before being sent. If it contains an Object it will be converted to JSON before being sent.
If it contains a binary Buffer the message will be published as-is.
</p> </p>
<p>The topic used can be configured in the node or, if left blank, can be set <p>The topic used can be configured in the node or, if left blank, can be set
by <code>msg.topic</code>.</p> by <code>msg.topic</code>.</p>
@ -148,8 +149,8 @@
<div class="form-row node-input-broker"> <div class="form-row node-input-broker">
<label for="node-config-input-broker"><i class="fa fa-globe"></i> <span data-i18n="mqtt.label.broker"></span></label> <label for="node-config-input-broker"><i class="fa fa-globe"></i> <span data-i18n="mqtt.label.broker"></span></label>
<input class="input-append-left" type="text" id="node-config-input-broker" placeholder="e.g. localhost" style="width:40%;" > <input class="input-append-left" type="text" id="node-config-input-broker" placeholder="e.g. localhost" style="width:40%;" >
<label for="node-config-input-port" style="margin-left: 10px; width: 35px; "> <span data-i18n="mqtt.label.port"></span></label> <label for="node-config-input-port" style="margin-left:20px; width:35px; "> <span data-i18n="mqtt.label.port"></span></label>
<input type="text" id="node-config-input-port" data-i18n="[placeholder]mqtt.label.port" style="width:45px"> <input type="text" id="node-config-input-port" data-i18n="[placeholder]mqtt.label.port" style="width:55px">
</div> </div>
<div class="form-row"> <div class="form-row">
<input type="checkbox" id="node-config-input-usetls" style="display: inline-block; width: auto; vertical-align: top;"> <input type="checkbox" id="node-config-input-usetls" style="display: inline-block; width: auto; vertical-align: top;">
@ -299,7 +300,7 @@
id: "mqtt-broker-tab-will", id: "mqtt-broker-tab-will",
label: this._("mqtt.tabs-label.will") label: this._("mqtt.tabs-label.will")
}); });
setTimeout(function() { tabs.resize()},0); setTimeout(function() { tabs.resize(); },0);
if (typeof this.cleansession === 'undefined') { if (typeof this.cleansession === 'undefined') {
this.cleansession = true; this.cleansession = true;
$("#node-config-input-cleansession").prop("checked",true); $("#node-config-input-cleansession").prop("checked",true);

View File

@ -298,7 +298,7 @@ module.exports = function(RED) {
done(); done();
}); });
this.client.end(); this.client.end();
} else if (this.connecting) { } else if (this.connecting || node.client.reconnecting) {
node.client.end(); node.client.end();
done(); done();
} else { } else {