diff --git a/package.json b/package.json index 8bd48b4d97c6c5b7dfbe2b8e92e0d76dfbb24abd..acba66a2af8082d586dcaf0e8172831972a1ba42 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "apicache": "*", "asyncawait": "^0.7.4", "bluebird": "^2.9.34", + "connect-timeout": "*", "debug": "^2.2.0", "express": "^4.13.3", "morgan": "^1.6.1", diff --git a/server.js b/server.js index 8f9826aa6e4c70a039734bdc297cff7701cf2567..f3bf379ade6bb45745f1f7bbac1a0cd75274f091 100755 --- a/server.js +++ b/server.js @@ -11,6 +11,7 @@ var await = require( 'asyncawait/await' ); var async = require( 'asyncawait/async' ); var apicache = require( 'apicache' ).options( { defaultDuration: 15000 } ); var cache = apicache.middleware; +var timeout = require( 'connect-timeout' ); var request = require( 'request' ); /** @@ -26,6 +27,8 @@ var port = serverConfig.port || 3000; var app = express(); app.use( morgan( DEBUG ? 'dev' : 'combined' ) ); +app.use( timeout( '10s' ) ); +app.use( haltOnTimeout ); // Parse lock configurations Object.keys( config ).forEach( function( lockName ) { @@ -84,6 +87,13 @@ function statusStringtoInt( status ) { return statusInt; } +// Timeout callback +function haltOnTimeout( req, res, next ) { + if ( ! req.timedout ) { + next(); + } +} + /** * ROUTES */