Always send lowlevel_error response to client (#2731)#2
Always send lowlevel_error response to client (#2731)#2MitchLewis930 wants to merge 1 commit intopr_052_beforefrom
Conversation
* Always send lowlevel_error response to client * Add spec for lowlever error handler * Make sure we have a clean buffer when starting response * Simplify test * Rename spec * Add method docs * Tweak the test * Return 500 from lowlevel_error_handler in test Co-authored-by: Patrik Ragnarsson <patrik@starkast.net>
PR Compliance Guide 🔍Below is a summary of compliance checks for this PR:
Compliance status legend🟢 - Fully Compliant🟡 - Partial Compliant 🔴 - Not Compliant ⚪ - Requires Further Human Verification 🏷️ - Compliance label |
||||||||||||||||||||||||
PR Code Suggestions ✨Explore these optional code suggestions:
|
|||||||||
User description
PR_052
PR Type
Enhancement, Bug fix
Description
Refactor error handling to always send lowlevel_error responses to clients
Extract response writing logic into separate
write_responsemethodEnsure
lowlevel_error_handlerreturns proper status, headers, body tupleUpdate
client_errorto use new response writing flowAdd test for custom lowlevel error handler responses
Diagram Walkthrough
File Walkthrough
request.rb
Refactor request handling and extract response writinglib/puma/request.rb
bodyandheadvariables
ThreadPool::ForceShutdownandgeneric exceptions separately
write_responsemethod withcomprehensive documentation
write_responsemethodserver.rb
Enhance error handling with proper response formattinglib/puma/server.rb
client_errormethod signature to acceptbufferandrequestsparameters
client_errorto callwrite_responseinstead ofclient.write_errorlowlevel_errorto handle handler return values and ensureproper tuple format
parameters)
lowlevel_erroralways returns[status, headers, body]tupletest_puma_server.rb
Add test for custom lowlevel error handlertest/test_puma_server.rb
test_lowlevel_error_handler_custom_responseto verifycustom error handler responses
response body
error page content
test_response_header.rb
Fix HTTP version in test assertionstest/test_response_header.rb
HTTP/1.1toHTTP/1.0in twotest cases