Fix for Email In Node Crashed Node-RED (#471)

When attachments aren't correct.
This commit is contained in:
Tom Brusehaver 2018-09-03 13:56:36 -05:00 committed by Dave Conway-Jones
parent 52df7cb30f
commit 337588e7ab
1 changed files with 17 additions and 6 deletions

View File

@ -226,6 +226,7 @@ module.exports = function(RED) {
function nextMessage() { function nextMessage() {
if (currentMessage > maxMessage) { if (currentMessage > maxMessage) {
pop3Client.quit(); pop3Client.quit();
setInputRepeatTimeout();
return; return;
} }
pop3Client.retr(currentMessage); pop3Client.retr(currentMessage);
@ -248,6 +249,7 @@ module.exports = function(RED) {
}); });
pop3Client.on("error", function(err) { pop3Client.on("error", function(err) {
setInputRepeatTimeout();
node.log("error: " + JSON.stringify(err)); node.log("error: " + JSON.stringify(err));
}); });
@ -263,6 +265,7 @@ module.exports = function(RED) {
} else { } else {
node.log(util.format("login error: %s %j", status, rawData)); node.log(util.format("login error: %s %j", status, rawData));
pop3Client.quit(); pop3Client.quit();
setInputRepeatTimeout();
} }
}); });
@ -284,6 +287,7 @@ module.exports = function(RED) {
else { else {
node.log(util.format("retr error: %s %j", status, rawData)); node.log(util.format("retr error: %s %j", status, rawData));
pop3Client.quit(); pop3Client.quit();
setInputRepeatTimeout();
} }
}); });
@ -323,6 +327,7 @@ module.exports = function(RED) {
node.status({fill:"red", shape:"ring", text:"email.status.foldererror"}); node.status({fill:"red", shape:"ring", text:"email.status.foldererror"});
node.error(RED._("email.errors.fetchfail", {folder:node.box}),err); node.error(RED._("email.errors.fetchfail", {folder:node.box}),err);
imap.end(); imap.end();
setInputRepeatTimeout();
return; return;
} }
//console.log("> search - err=%j, results=%j", err, results); //console.log("> search - err=%j, results=%j", err, results);
@ -330,6 +335,7 @@ module.exports = function(RED) {
//console.log(" [X] - Nothing to fetch"); //console.log(" [X] - Nothing to fetch");
node.status({}); node.status({});
imap.end(); imap.end();
setInputRepeatTimeout();
return; return;
} }
@ -377,10 +383,12 @@ module.exports = function(RED) {
} else { } else {
cleanup(); cleanup();
} }
setInputRepeatTimeout();
}); });
fetch.once('error', function(err) { fetch.once('error', function(err) {
console.log('Fetch error: ' + err); console.log('Fetch error: ' + err);
setInputRepeatTimeout();
}); });
}); // End of imap->search }); // End of imap->search
}); // End of imap->openInbox }); // End of imap->openInbox
@ -424,16 +432,19 @@ module.exports = function(RED) {
this.on("close", function() { this.on("close", function() {
if (this.interval_id != null) { if (this.interval_id != null) {
clearInterval(this.interval_id); clearTimeout(this.interval_id);
} }
if (imap) { imap.destroy(); } if (imap) { imap.destroy(); }
}); });
// Set the repetition timer as needed function setInputRepeatTimeout()
if (!isNaN(this.repeat) && this.repeat > 0) { {
this.interval_id = setInterval( function() { // Set the repetition timer as needed
node.emit("input",{}); if (!isNaN(node.repeat) && node.repeat > 0) {
}, this.repeat ); node.interval_id = setTimeout( function() {
node.emit("input",{});
}, node.repeat );
}
} }
node.emit("input",{}); node.emit("input",{});