- Rack 2 should not use
to_ary.
- Prefer
Protocol::HTTP::Body::Bufferedwhere possible for enumerable bodies, mainly to avoid creatingEnumerables.
- Fix missing
body#closefor streaming bodies.
- For the purpose of constructing the rack request environment, trailers are ignored.
- Convert header values into strings using
to_sso thatHeaders#eachcan yield non-string values if necessary.
- Use
Headers#addinstead ofHeaders#[]=in Rack3 and Rack31 adapters, which is the correct interface for appending headers.
- Correctly invoke
rack.response_finishedin reverse order. - Tolerate errors during
rack.response_finishedcallbacks.
- Support
rack.response_finishedin Rack 2 if it's present in the environment.
- Hijacked IO is no longer duped, as it's not retained by the original connection, and
SSLSocketdoes not support duping.
- Use
IO::Stream::Readablefor the input body, which is a better tested and more robust interface.
- Handling of
HEADrequests is now more robust.
- 100% test and documentation coverage.
- {Protocol::Rack::Input#rewind} now works when the entire input is already read.
- {Protocol::Rack::Adapter::Rack2} has stricter validation of the application response.
- Ignore (and close) response bodies for status codes that don't allow them.
- Stop setting
env["SERVER_PORT"]tonilif not present.