diff --git a/Gemfile b/Gemfile index 63da8400..24d22e48 100644 --- a/Gemfile +++ b/Gemfile @@ -15,6 +15,7 @@ gem 'yard-sinatra', github: 'rkh/yard-sinatra' gem 'rack-contrib', github: 'rack/rack-contrib' gem 'rack-cache', '~> 1.2' gem 'rack-attack' +gem 'rack-timeout' gem 'gh' gem 'bunny' gem 'dalli' diff --git a/Gemfile.lock b/Gemfile.lock index 1762a8fa..3fb12413 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -203,6 +203,7 @@ GEM rack rack-test (0.6.2) rack (>= 1.0) + rack-timeout (0.0.4) railties (3.2.13) actionpack (= 3.2.13) activesupport (= 3.2.13) @@ -293,6 +294,7 @@ DEPENDENCIES rack-attack rack-cache (~> 1.2) rack-contrib! + rack-timeout rake (~> 0.9.2) rb-fsevent (~> 0.9.1) rerun diff --git a/lib/travis/api/app.rb b/lib/travis/api/app.rb index fb4ac081..4974f595 100644 --- a/lib/travis/api/app.rb +++ b/lib/travis/api/app.rb @@ -5,6 +5,7 @@ require 'rack/protection' require 'rack/contrib' require 'rack/cache' require 'rack/attack' +require 'rack-timeout' require 'active_record' require 'redis' require 'gh' @@ -64,6 +65,9 @@ module Travis::Api def initialize @app = Rack::Builder.app do + Rack::Timeout.timeout = 10 + use Rack::Timeout + Rack::Utils::HTTP_STATUS_CODES[420] = "Enhance Your Calm" use Rack::Attack Rack::Attack.blacklist('block client requesting ruby builds') do |req|