From 6e0610adc4dbd62f6fa179516dbede03f415f09a Mon Sep 17 00:00:00 2001 From: Jan Sandbrink Date: Fri, 7 May 2021 15:30:43 +0200 Subject: [PATCH] Fix rendering of 503 error when lock is still held Rendering the error message was causing a RackLint error, because the value of HTTP Headers is always supposed to be a string Rack::Lint::LintError: a header value must be a String, but the value of 'Retry-After' is a Integer Now this error case should behave compliant to the rack specification. --- lib/geminabox/server.rb | 2 +- test/units/geminabox/server_test.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/geminabox/server.rb b/lib/geminabox/server.rb index 1ad43d39..b0c87e71 100644 --- a/lib/geminabox/server.rb +++ b/lib/geminabox/server.rb @@ -206,7 +206,7 @@ def file_class=(klass) def serialize_update(&block) with_rlock(&block) rescue ReentrantFlock::AlreadyLocked - halt 503, { 'Retry-After' => Geminabox.retry_interval }, 'Repository lock is held by another process' + halt 503, { 'Retry-After' => Geminabox.retry_interval.to_s }, 'Repository lock is held by another process' end def with_rlock(&block) diff --git a/test/units/geminabox/server_test.rb b/test/units/geminabox/server_test.rb index bce5beda..291e40f4 100644 --- a/test/units/geminabox/server_test.rb +++ b/test/units/geminabox/server_test.rb @@ -101,7 +101,7 @@ def @server.halt(code, headers, message) @server.send(:serialize_update){} expected_args = [ 503, - {'Retry-After' => Geminabox.retry_interval}, + { 'Retry-After' => Geminabox.retry_interval.to_s }, 'Repository lock is held by another process' ] assert_equal expected_args, @server.args