diff --git a/lib/raven/processor/cookies.rb b/lib/raven/processor/cookies.rb index 5e5d42b55..609e41fb4 100644 --- a/lib/raven/processor/cookies.rb +++ b/lib/raven/processor/cookies.rb @@ -30,7 +30,7 @@ def process_if_string_keys(data) end def generate_masked_cookies(cookies) - cookies.merge(cookies) { STRING_MASK } + cookies.merge(cookies) { STRING_MASK } if cookies.respond_to?(:merge) end end end diff --git a/lib/raven/processor/removecircularreferences.rb b/lib/raven/processor/removecircularreferences.rb index 85833468a..a4114bf52 100644 --- a/lib/raven/processor/removecircularreferences.rb +++ b/lib/raven/processor/removecircularreferences.rb @@ -1,7 +1,8 @@ module Raven class Processor::RemoveCircularReferences < Processor + ELISION_STRING = "(...)".freeze def process(value, visited = []) - return "(...)" if visited.include?(value.__id__) + return ELISION_STRING if visited.include?(value.__id__) visited << value.__id__ if value.is_a?(Array) || value.is_a?(Hash) diff --git a/spec/raven/processors/cookies_spec.rb b/spec/raven/processors/cookies_spec.rb index bbaca804d..f13bc702f 100644 --- a/spec/raven/processors/cookies_spec.rb +++ b/spec/raven/processors/cookies_spec.rb @@ -45,4 +45,19 @@ expect(result["request"]["some_other_data"]).to eq("still_here") expect(result["request"]["headers"]["AnotherHeader"]).to eq("still_here") end + + it 'does not fail if it runs after Processor::RemoveCircularReferences' do + test_data = { + :request => { + :headers => { + "Cookie" => Raven::Processor::RemoveCircularReferences::ELISION_STRING, + "AnotherHeader" => "still_here" + }, + :cookies => Raven::Processor::RemoveCircularReferences::ELISION_STRING, + :some_other_data => "still_here" + } + } + + @processor.process(test_data) + end end