diff --git a/nodes/core/io/21-httprequest.js b/nodes/core/io/21-httprequest.js index e1fd0bda5..abd47dd64 100644 --- a/nodes/core/io/21-httprequest.js +++ b/nodes/core/io/21-httprequest.js @@ -28,6 +28,8 @@ module.exports = function(RED) { var isTemplatedUrl = (nodeUrl||"").indexOf("{{") != -1; var nodeMethod = n.method || "GET"; this.ret = n.ret || "txt"; + if (RED.settings.httpRequestTimeout) { this.reqTimeout = parseInt(RED.settings.httpRequestTimeout) || 120000; } + else { this.reqTimeout = 120000; } var node = this; var prox, noprox; @@ -162,6 +164,13 @@ module.exports = function(RED) { node.status({}); }); }); + req.setTimeout(node.reqTimeout, function() { + node.error(RED._("common.notification.errors.no-response"),msg); + setTimeout(function() { + node.status({fill:"red",shape:"ring",text:"common.notification.errors.no-response"}); + },10); + req.abort(); + }); req.on('error',function(err) { msg.payload = err.toString() + " : " + url; msg.statusCode = err.code; diff --git a/settings.js b/settings.js index a6e6797d8..3fa587f60 100644 --- a/settings.js +++ b/settings.js @@ -40,6 +40,10 @@ module.exports = { // defaults to no timeout //socketTimeout: 120000, + // Timeout in milliseconds for HTTP request connections + // defaults to 120 seconds + //httpRequestTimeout: 120000, + // The maximum length, in characters, of any message sent to the debug sidebar tab debugMaxLength: 1000,