From 4cae518fd0b2ba81114ed4cc26eb1704a1f71e28 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sat, 29 Aug 2009 13:39:58 -0700 Subject: Log bad/invalid app responses as 500 errors Some misbehaved apps can do this to us, and we don't want the C extension to segfault when this happens. --- lib/clogger/pure.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/clogger/pure.rb b/lib/clogger/pure.rb index 85c6777..f593af0 100644 --- a/lib/clogger/pure.rb +++ b/lib/clogger/pure.rb @@ -16,7 +16,12 @@ class Clogger def call(env) @start = Time.now - status, headers, body = @app.call(env) + resp = @app.call(env) + unless resp.instance_of?(Array) && resp.size == 3 + log(env, 500, {}) + raise TypeError, "app response not a 3 element Array: #{resp.inspect}" + end + status, headers, body = resp if wrap_body? @reentrant = env['rack.multithread'] @env, @status, @headers, @body = env, status, headers, body -- cgit v1.2.3-24-ge0c7