summaryrefslogtreecommitdiffstats
path: root/vnfmarket/src/main/webapp/vnfmarket/node_modules/connect-timeout/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'vnfmarket/src/main/webapp/vnfmarket/node_modules/connect-timeout/index.js')
-rw-r--r--vnfmarket/src/main/webapp/vnfmarket/node_modules/connect-timeout/index.js74
1 files changed, 74 insertions, 0 deletions
diff --git a/vnfmarket/src/main/webapp/vnfmarket/node_modules/connect-timeout/index.js b/vnfmarket/src/main/webapp/vnfmarket/node_modules/connect-timeout/index.js
new file mode 100644
index 00000000..c39a2288
--- /dev/null
+++ b/vnfmarket/src/main/webapp/vnfmarket/node_modules/connect-timeout/index.js
@@ -0,0 +1,74 @@
+/*!
+ * connect-timeout
+ * Copyright(c) 2014 Jonathan Ong
+ * Copyright(c) 2014 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+/**
+ * Module dependencies.
+ */
+
+var createError = require('http-errors');
+var debug = require('debug')('connect:timeout');
+var ms = require('ms');
+var onHeaders = require('on-headers');
+
+/**
+ * Timeout:
+ *
+ * See README.md for documentation.
+ *
+ * @param {Number} time
+ * @param {Object} options
+ * @return {Function} middleware
+ * @api public
+ */
+
+module.exports = function timeout(time, options) {
+ options = options || {};
+
+ time = typeof time === 'string'
+ ? ms(time)
+ : Number(time || 5000);
+
+ var respond = !('respond' in options) || options.respond === true;
+
+ return function(req, res, next) {
+ var destroy = req.socket.destroy;
+ var id = setTimeout(function(){
+ req.timedout = true;
+ req.emit('timeout', time);
+ }, time);
+
+ if (respond) {
+ req.on('timeout', onTimeout(time, next));
+ }
+
+ req.clearTimeout = function(){
+ clearTimeout(id);
+ };
+
+ req.socket.destroy = function(){
+ clearTimeout(id);
+ destroy.call(this);
+ };
+
+ req.timedout = false;
+
+ onHeaders(res, function(){
+ clearTimeout(id);
+ });
+
+ next();
+ };
+};
+
+function onTimeout(time, cb){
+ return function(){
+ cb(createError(503, 'Response timeout', {
+ code: 'ETIMEDOUT',
+ timeout: time
+ }));
+ };
+}