rack 2.2.8.1 → 3.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +301 -81
- data/CONTRIBUTING.md +63 -55
- data/MIT-LICENSE +1 -1
- data/README.md +328 -0
- data/SPEC.rdoc +204 -131
- data/lib/rack/auth/abstract/handler.rb +3 -1
- data/lib/rack/auth/abstract/request.rb +3 -1
- data/lib/rack/auth/basic.rb +1 -4
- data/lib/rack/bad_request.rb +8 -0
- data/lib/rack/body_proxy.rb +21 -3
- data/lib/rack/builder.rb +102 -69
- data/lib/rack/cascade.rb +2 -3
- data/lib/rack/common_logger.rb +23 -18
- data/lib/rack/conditional_get.rb +18 -15
- data/lib/rack/constants.rb +67 -0
- data/lib/rack/content_length.rb +12 -16
- data/lib/rack/content_type.rb +8 -5
- data/lib/rack/deflater.rb +40 -26
- data/lib/rack/directory.rb +9 -3
- data/lib/rack/etag.rb +14 -23
- data/lib/rack/events.rb +4 -0
- data/lib/rack/files.rb +15 -17
- data/lib/rack/head.rb +9 -8
- data/lib/rack/headers.rb +238 -0
- data/lib/rack/lint.rb +838 -644
- data/lib/rack/lock.rb +2 -5
- data/lib/rack/logger.rb +3 -0
- data/lib/rack/method_override.rb +5 -1
- data/lib/rack/mime.rb +14 -5
- data/lib/rack/mock.rb +1 -271
- data/lib/rack/mock_request.rb +171 -0
- data/lib/rack/mock_response.rb +124 -0
- data/lib/rack/multipart/generator.rb +7 -5
- data/lib/rack/multipart/parser.rb +215 -90
- data/lib/rack/multipart/uploaded_file.rb +4 -0
- data/lib/rack/multipart.rb +53 -40
- data/lib/rack/null_logger.rb +9 -0
- data/lib/rack/query_parser.rb +81 -102
- data/lib/rack/recursive.rb +2 -0
- data/lib/rack/reloader.rb +0 -2
- data/lib/rack/request.rb +250 -123
- data/lib/rack/response.rb +146 -66
- data/lib/rack/rewindable_input.rb +24 -5
- data/lib/rack/runtime.rb +7 -6
- data/lib/rack/sendfile.rb +30 -25
- data/lib/rack/show_exceptions.rb +21 -4
- data/lib/rack/show_status.rb +17 -7
- data/lib/rack/static.rb +8 -8
- data/lib/rack/tempfile_reaper.rb +15 -4
- data/lib/rack/urlmap.rb +3 -1
- data/lib/rack/utils.rb +232 -233
- data/lib/rack/version.rb +1 -9
- data/lib/rack.rb +13 -89
- metadata +15 -41
- data/README.rdoc +0 -320
- data/Rakefile +0 -130
- data/bin/rackup +0 -5
- data/contrib/rack.png +0 -0
- data/contrib/rack.svg +0 -150
- data/contrib/rack_logo.svg +0 -164
- data/contrib/rdoc.css +0 -412
- data/example/lobster.ru +0 -6
- data/example/protectedlobster.rb +0 -16
- data/example/protectedlobster.ru +0 -10
- data/lib/rack/auth/digest/md5.rb +0 -131
- data/lib/rack/auth/digest/nonce.rb +0 -54
- data/lib/rack/auth/digest/params.rb +0 -54
- data/lib/rack/auth/digest/request.rb +0 -43
- data/lib/rack/chunked.rb +0 -117
- data/lib/rack/core_ext/regexp.rb +0 -14
- data/lib/rack/file.rb +0 -7
- data/lib/rack/handler/cgi.rb +0 -59
- data/lib/rack/handler/fastcgi.rb +0 -100
- data/lib/rack/handler/lsws.rb +0 -61
- data/lib/rack/handler/scgi.rb +0 -71
- data/lib/rack/handler/thin.rb +0 -36
- data/lib/rack/handler/webrick.rb +0 -129
- data/lib/rack/handler.rb +0 -104
- data/lib/rack/lobster.rb +0 -70
- data/lib/rack/server.rb +0 -466
- data/lib/rack/session/abstract/id.rb +0 -523
- data/lib/rack/session/cookie.rb +0 -204
- data/lib/rack/session/memcache.rb +0 -10
- data/lib/rack/session/pool.rb +0 -85
- data/rack.gemspec +0 -46
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3c10c6fa362f15e1169822a88e4fe9edfa36b01e48ba5d338bf55e94889a097f
|
4
|
+
data.tar.gz: c205f62d2490fda13b70cc5d0b3be62af5cad3efa950d5ceabc0e1980d3fef83
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 466e3dd3536d81196d86f1cc0a3fa8e833cfe96b523843160aef33267aab0e0e46501d5f163f2a72d4e3401385c43312237f67da26932b2d192c9d1bfb3dcfdc
|
7
|
+
data.tar.gz: 3bcf798901aeaa5a94524864925160077f07ac26ebaa9e3ad6b080afbe45fb0a7f1f9ee89d990720aeae7d5b8dd73e2e1bf82a264323649219b59682b56cc09a
|
data/CHANGELOG.md
CHANGED
@@ -2,38 +2,245 @@
|
|
2
2
|
|
3
3
|
All notable changes to this project will be documented in this file. For info on how to format all future additions to this file please reference [Keep A Changelog](https://keepachangelog.com/en/1.0.0/).
|
4
4
|
|
5
|
-
## [
|
5
|
+
## [3.1.5] - 2024-07-02
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
### Security
|
8
|
+
|
9
|
+
- Fix potential ReDoS attack in `Rack::Request#parse_http_accept_header`. ([GHSA-cj83-2ww7-mvq7](https://github.com/rack/rack/security/advisories/GHSA-cj83-2ww7-mvq7), [@dwisiswant0](https://github.com/dwisiswant0))
|
10
|
+
|
11
|
+
## [3.1.4] - 2024-06-22
|
12
|
+
|
13
|
+
### Fixed
|
14
|
+
|
15
|
+
- Fix `Rack::Lint` matching some paths incorrectly as authority form. ([#2220](https://github.com/rack/rack/pull/2220), [@ioquatix])
|
16
|
+
|
17
|
+
## [3.1.3] - 2024-06-12
|
18
|
+
|
19
|
+
### Fixed
|
20
|
+
|
21
|
+
- Fix passing non-strings to `Rack::Utils.escape_html`. ([#2202](https://github.com/rack/rack/pull/2202), [@earlopain])
|
22
|
+
- `Rack::MockResponse` gracefully handles empty cookies ([#2203](https://github.com/rack/rack/pull/2203) [@wynksaiddestroy](https://github.com/wynksaiddestroy))
|
23
|
+
|
24
|
+
## [3.1.2] - 2024-06-11
|
25
|
+
|
26
|
+
## Changed
|
27
|
+
|
28
|
+
- `Rack::Response` will take in to consideration chunked encoding responses ([#2204](https://github.com/rack/rack/pull/2204), [@tenderlove])
|
29
|
+
|
30
|
+
## [3.1.1] - 2024-06-11
|
31
|
+
|
32
|
+
- Oops, I shouldn't have shipped this
|
33
|
+
|
34
|
+
## [3.1.0] - 2024-06-11
|
35
|
+
|
36
|
+
### SPEC Changes
|
37
|
+
|
38
|
+
- `rack.input` is now optional. ([#1997](https://github.com/rack/rack/pull/1997), [@ioquatix])
|
39
|
+
- `PATH_INFO` is now validated according to the HTTP/1.1 specification. ([#2117](https://github.com/rack/rack/pull/2117), [@ioquatix])
|
40
|
+
- `rack.protocol` is an optional environment key and response header for handling connection upgrades.
|
41
|
+
|
42
|
+
### Added
|
43
|
+
|
44
|
+
- Introduce `module Rack::BadRequest` which is included in multipart and query parser errors. ([#2019](https://github.com/rack/rack/pull/2019), [@ioquatix])
|
45
|
+
- Add `.mjs` MIME type ([#2057](https://github.com/rack/rack/pull/2057), [@axilleas])
|
46
|
+
- `set_cookie_header` utility now supports the `partitioned` cookie attribute. This is required by Chrome in some embedded contexts. ([#2131](https://github.com/rack/rack/pull/2131), [@flavio-b])
|
47
|
+
- `rack.early_hints` is now officially supported as an optional feature (already implemented by Unicorn, Puma, and Falcon). ([#1831](https://github.com/rack/rack/pull/1831), [@casperisfine, @jeremyevans])
|
48
|
+
|
49
|
+
### Changed
|
9
50
|
|
10
|
-
|
51
|
+
- `rack.input` is now optional, and if missing, will raise an error. Use this to fail on multipart parsing a request without an input body. ([#2018](https://github.com/rack/rack/pull/2018), [@ioquatix])
|
52
|
+
- MIME type for JavaScript files (`.js`) changed from `application/javascript` to `text/javascript` ([`1bd0f15`](https://github.com/rack/rack/commit/1bd0f1597d8f4a90d47115f3e156a8ce7870c9c8))
|
53
|
+
- Update MIME types associated to `.ttf`, `.woff`, `.woff2` and `.otf` extensions to use mondern `font/*` types. ([#2065](https://github.com/rack/rack/pull/2065), [@davidstosik])
|
54
|
+
- `Rack::Utils.escape_html` is now delegated to `CGI.escapeHTML`. `'` is escaped to `#39;` instead of `#x27;`. (decimal vs hexadecimal) ([#2099](https://github.com/rack/rack/pull/2099), [@JunichiIto](https://github.com/JunichiIto))
|
55
|
+
- Only cookie keys that are not valid according to the HTTP specifications are escaped. We are planning to deprecate this behaviour, so now a deprecation message will be emitted in this case. In the future, invalid cookie keys may not be accepted. ([#2191](https://github.com/rack/rack/pull/2191), [@ioquatix])
|
56
|
+
|
57
|
+
### Removed
|
58
|
+
|
59
|
+
- Remove non-standard status codes 306, 509, & 510 and update descriptions for 413, 422, & 451. ([#2137](https://github.com/rack/rack/pull/2137), [@wtn])
|
60
|
+
- Add fallback lookup and deprecation warning for obsolete status symbols. ([#2137](https://github.com/rack/rack/pull/2137), [@wtn])
|
61
|
+
- Deprecate automatic cache invalidation in `Request#{GET,POST}` ([#2073](https://github.com/rack/rack/pull/2073) ([@jeremyevans])
|
62
|
+
- `Rack::Logger` is deprecated. ([#2197](https://github.com/rack/rack/pull/2197), [@ioquatix])
|
63
|
+
|
64
|
+
### Fixed
|
65
|
+
|
66
|
+
- In `Rack::Files`, ignore the `Range` header if served file is 0 bytes. ([#2159](https://github.com/rack/rack/pull/2159), [@zarqman])
|
67
|
+
|
68
|
+
## [3.0.11] - 2024-05-10
|
69
|
+
|
70
|
+
- Backport #2062 to 3-0-stable: Do not allow `BodyProxy` to respond to `to_str`, make `to_ary` call close . ([#2062](https://github.com/rack/rack/pull/2062), [@jeremyevans](https://github.com/jeremyevans))
|
71
|
+
|
72
|
+
## [3.0.10] - 2024-03-21
|
73
|
+
|
74
|
+
- Backport #2104 to 3-0-stable: Return empty when parsing a multi-part POST with only one end delimiter. ([#2164](https://github.com/rack/rack/pull/2164), [@JoeDupuis](https://github.com/JoeDupuis))
|
75
|
+
|
76
|
+
## [3.0.9.1] - 2024-02-21
|
77
|
+
|
78
|
+
### Security
|
79
|
+
|
80
|
+
* [CVE-2024-26146] Fixed ReDoS in Accept header parsing
|
81
|
+
* [CVE-2024-25126] Fixed ReDoS in Content Type header parsing
|
82
|
+
* [CVE-2024-26141] Reject Range headers which are too large
|
83
|
+
|
84
|
+
[CVE-2024-26146]: https://github.com/advisories/GHSA-54rr-7fvw-6x8f
|
85
|
+
[CVE-2024-25126]: https://github.com/advisories/GHSA-22f2-v57c-j9cx
|
86
|
+
[CVE-2024-26141]: https://github.com/advisories/GHSA-xj5v-6v4g-jfw6
|
87
|
+
|
88
|
+
## [3.0.9] - 2024-01-31
|
89
|
+
|
90
|
+
- Fix incorrect content-length header that was emitted when `Rack::Response#write` was used in some situations. ([#2150](https://github.com/rack/rack/pull/2150), [@mattbrictson](https://github.com/mattbrictson))
|
91
|
+
|
92
|
+
## [3.0.8] - 2023-06-14
|
93
|
+
|
94
|
+
- Fix some unused variable verbose warnings. ([#2084](https://github.com/rack/rack/pull/2084), [@jeremyevans], [@skipkayhil](https://github.com/skipkayhil))
|
95
|
+
|
96
|
+
## [3.0.7] - 2023-03-16
|
97
|
+
|
98
|
+
- Make query parameters without `=` have `nil` values. ([#2059](https://github.com/rack/rack/pull/2059), [@jeremyevans])
|
99
|
+
|
100
|
+
## [3.0.6.1] - 2023-03-13
|
101
|
+
|
102
|
+
### Security
|
11
103
|
|
12
104
|
- [CVE-2023-27539] Avoid ReDoS in header parsing
|
13
105
|
|
14
|
-
## [
|
106
|
+
## [3.0.6] - 2023-03-13
|
15
107
|
|
16
|
-
-
|
108
|
+
- Add `QueryParser#missing_value` for handling missing values + tests. ([#2052](https://github.com/rack/rack/pull/2052), [@ioquatix])
|
17
109
|
|
18
|
-
## [
|
110
|
+
## [3.0.5] - 2023-03-13
|
19
111
|
|
20
|
-
-
|
112
|
+
- Split form/query parsing into two steps. ([#2038](https://github.com/rack/rack/pull/2038), [@matthewd](https://github.com/matthewd))
|
113
|
+
|
114
|
+
## [3.0.4.2] - 2023-03-02
|
115
|
+
|
116
|
+
### Security
|
117
|
+
|
118
|
+
- [CVE-2023-27530] Introduce multipart_total_part_limit to limit total parts
|
119
|
+
|
120
|
+
## [3.0.4.1] - 2023-01-17
|
21
121
|
|
22
|
-
|
122
|
+
### Security
|
23
123
|
|
24
124
|
- [CVE-2022-44571] Fix ReDoS vulnerability in multipart parser
|
125
|
+
- [CVE-2022-44570] Fix ReDoS in Rack::Utils.get_byte_ranges
|
25
126
|
- [CVE-2022-44572] Forbid control characters in attributes (also ReDoS)
|
26
127
|
|
27
|
-
## [
|
128
|
+
## [3.0.4] - 2023-01-17
|
28
129
|
|
29
|
-
-
|
130
|
+
- `Rack::Request#POST` should consistently raise errors. Cache errors that occur when invoking `Rack::Request#POST` so they can be raised again later. ([#2010](https://github.com/rack/rack/pull/2010), [@ioquatix])
|
131
|
+
- Fix `Rack::Lint` error message for `HTTP_CONTENT_TYPE` and `HTTP_CONTENT_LENGTH`. ([#2007](https://github.com/rack/rack/pull/2007), [@byroot](https://github.com/byroot))
|
132
|
+
- Extend `Rack::MethodOverride` to handle `QueryParser::ParamsTooDeepError` error. ([#2006](https://github.com/rack/rack/pull/2006), [@byroot](https://github.com/byroot))
|
30
133
|
|
31
|
-
## [
|
134
|
+
## [3.0.3] - 2022-12-27
|
32
135
|
|
33
136
|
### Fixed
|
34
137
|
|
35
138
|
- `Rack::URLMap` uses non-deprecated form of `Regexp.new`. ([#1998](https://github.com/rack/rack/pull/1998), [@weizheheng](https://github.com/weizheheng))
|
36
139
|
|
140
|
+
## [3.0.2] - 2022-12-05
|
141
|
+
|
142
|
+
### Fixed
|
143
|
+
|
144
|
+
- `Utils.build_nested_query` URL-encodes nested field names including the square brackets.
|
145
|
+
- Allow `Rack::Response` to pass through streaming bodies. ([#1993](https://github.com/rack/rack/pull/1993), [@ioquatix])
|
146
|
+
|
147
|
+
## [3.0.1] - 2022-11-18
|
148
|
+
|
149
|
+
### Fixed
|
150
|
+
|
151
|
+
- `MethodOverride` does not look for an override if a request does not include form/parseable data.
|
152
|
+
- `Rack::Lint::Wrapper` correctly handles `respond_to?` with `to_ary`, `each`, `call` and `to_path`, forwarding to the body. ([#1981](https://github.com/rack/rack/pull/1981), [@ioquatix])
|
153
|
+
|
154
|
+
## [3.0.0] - 2022-09-06
|
155
|
+
|
156
|
+
- No changes
|
157
|
+
|
158
|
+
## [3.0.0.rc1] - 2022-09-04
|
159
|
+
|
160
|
+
### SPEC Changes
|
161
|
+
|
162
|
+
- Stream argument must implement `<<` https://github.com/rack/rack/pull/1959
|
163
|
+
- `close` may be called on `rack.input` https://github.com/rack/rack/pull/1956
|
164
|
+
- `rack.response_finished` may be used for executing code after the response has been finished https://github.com/rack/rack/pull/1952
|
165
|
+
|
166
|
+
## [3.0.0.beta1] - 2022-08-08
|
167
|
+
|
168
|
+
### Security
|
169
|
+
|
170
|
+
- Do not use semicolon as GET parameter separator. ([#1733](https://github.com/rack/rack/pull/1733), [@jeremyevans])
|
171
|
+
|
172
|
+
### SPEC Changes
|
173
|
+
|
174
|
+
- Response array must now be non-frozen.
|
175
|
+
- Response `status` must now be an integer greater than or equal to 100.
|
176
|
+
- Response `headers` must now be an unfrozen hash.
|
177
|
+
- Response header keys can no longer include uppercase characters.
|
178
|
+
- Response header values can be an `Array` to handle multiple values (and no longer supports `\n` encoded headers).
|
179
|
+
- Response body can now respond to `#call` (streaming body) instead of `#each` (enumerable body), for the equivalent of response hijacking in previous versions.
|
180
|
+
- Middleware must no longer call `#each` on the body, but they can call `#to_ary` on the body if it responds to `#to_ary`.
|
181
|
+
- `rack.input` is no longer required to be rewindable.
|
182
|
+
- `rack.multithread`/`rack.multiprocess`/`rack.run_once`/`rack.version` are no longer required environment keys.
|
183
|
+
- `SERVER_PROTOCOL` is now a required environment key, matching the HTTP protocol used in the request.
|
184
|
+
- `rack.hijack?` (partial hijack) and `rack.hijack` (full hijack) are now independently optional.
|
185
|
+
- `rack.hijack_io` has been removed completely.
|
186
|
+
- `rack.response_finished` is an optional environment key which contains an array of callable objects that must accept `#call(env, status, headers, error)` and are invoked after the response is finished (either successfully or unsuccessfully).
|
187
|
+
- It is okay to call `#close` on `rack.input` to indicate that you no longer need or care about the input.
|
188
|
+
- The stream argument supplied to the streaming body and hijack must support `#<<` for writing output.
|
189
|
+
|
190
|
+
### Removed
|
191
|
+
|
192
|
+
- Remove `rack.multithread`/`rack.multiprocess`/`rack.run_once`. These variables generally come too late to be useful. ([#1720](https://github.com/rack/rack/pull/1720), [@ioquatix], [@jeremyevans]))
|
193
|
+
- Remove deprecated Rack::Request::SCHEME_WHITELIST. ([@jeremyevans])
|
194
|
+
- Remove internal cookie deletion using pattern matching, there are very few practical cases where it would be useful and browsers handle it correctly without us doing anything special. ([#1844](https://github.com/rack/rack/pull/1844), [@ioquatix])
|
195
|
+
- Remove `rack.version` as it comes too late to be useful. ([#1938](https://github.com/rack/rack/pull/1938), [@ioquatix])
|
196
|
+
- Extract `rackup` command, `Rack::Server`, `Rack::Handler`, `Rack::Lobster` and related code into a separate gem. ([#1937](https://github.com/rack/rack/pull/1937), [@ioquatix])
|
197
|
+
|
198
|
+
### Added
|
199
|
+
|
200
|
+
- `Rack::Headers` added to support lower-case header keys. ([@jeremyevans])
|
201
|
+
- `Rack::Utils#set_cookie_header` now supports `escape_key: false` to avoid key escaping. ([@jeremyevans])
|
202
|
+
- `Rack::RewindableInput` supports size. ([@ahorek](https://github.com/ahorek))
|
203
|
+
- `Rack::RewindableInput::Middleware` added for making `rack.input` rewindable. ([@jeremyevans])
|
204
|
+
- The RFC 7239 Forwarded header is now supported and considered by default when looking for information on forwarding, falling back to the X-Forwarded-* headers. `Rack::Request.forwarded_priority` accessor has been added for configuring the priority of which header to check. ([#1423](https://github.com/rack/rack/issues/1423), [@jeremyevans])
|
205
|
+
- Allow response headers to contain array of values. ([#1598](https://github.com/rack/rack/issues/1598), [@ioquatix])
|
206
|
+
- Support callable body for explicit streaming support and clarify streaming response body behaviour. ([#1745](https://github.com/rack/rack/pull/1745), [@ioquatix], [#1748](https://github.com/rack/rack/pull/1748), [@wjordan])
|
207
|
+
- Allow `Rack::Builder#run` to take a block instead of an argument. ([#1942](https://github.com/rack/rack/pull/1942), [@ioquatix])
|
208
|
+
- Add `rack.response_finished` to `Rack::Lint`. ([#1802](https://github.com/rack/rack/pull/1802), [@BlakeWilliams], [#1952](https://github.com/rack/rack/pull/1952), [@ioquatix])
|
209
|
+
- The stream argument must implement `#<<`. ([#1959](https://github.com/rack/rack/pull/1959), [@ioquatix])
|
210
|
+
|
211
|
+
### Changed
|
212
|
+
|
213
|
+
- BREAKING CHANGE: Require `status` to be an Integer. ([#1662](https://github.com/rack/rack/pull/1662), [@olleolleolle](https://github.com/olleolleolle))
|
214
|
+
- BREAKING CHANGE: Query parsing now treats parameters without `=` as having the empty string value instead of nil value, to conform to the URL spec. ([#1696](https://github.com/rack/rack/issues/1696), [@jeremyevans])
|
215
|
+
- Relax validations around `Rack::Request#host` and `Rack::Request#hostname`. ([#1606](https://github.com/rack/rack/issues/1606), [@pvande](https://github.com/pvande))
|
216
|
+
- Removed antiquated handlers: FCGI, LSWS, SCGI, Thin. ([#1658](https://github.com/rack/rack/pull/1658), [@ioquatix])
|
217
|
+
- Removed options from `Rack::Builder.parse_file` and `Rack::Builder.load_file`. ([#1663](https://github.com/rack/rack/pull/1663), [@ioquatix])
|
218
|
+
- `Rack::HTTP_VERSION` has been removed and the `HTTP_VERSION` env setting is no longer set in the CGI and Webrick handlers. ([#970](https://github.com/rack/rack/issues/970), [@jeremyevans])
|
219
|
+
- `Rack::Request#[]` and `#[]=` now warn even in non-verbose mode. ([#1277](https://github.com/rack/rack/issues/1277), [@jeremyevans])
|
220
|
+
- Decrease default allowed parameter recursion level from 100 to 32. ([#1640](https://github.com/rack/rack/issues/1640), [@jeremyevans])
|
221
|
+
- Attempting to parse a multipart response with an empty body now raises Rack::Multipart::EmptyContentError. ([#1603](https://github.com/rack/rack/issues/1603), [@jeremyevans])
|
222
|
+
- `Rack::Utils.secure_compare` uses OpenSSL's faster implementation if available. ([#1711](https://github.com/rack/rack/pull/1711), [@bdewater](https://github.com/bdewater))
|
223
|
+
- `Rack::Request#POST` now caches an empty hash if input content type is not parseable. ([#749](https://github.com/rack/rack/pull/749), [@jeremyevans])
|
224
|
+
- BREAKING CHANGE: Updated `trusted_proxy?` to match full 127.0.0.0/8 network. ([#1781](https://github.com/rack/rack/pull/1781), [@snbloch](https://github.com/snbloch))
|
225
|
+
- Explicitly deprecate `Rack::File` which was an alias for `Rack::Files`. ([#1811](https://github.com/rack/rack/pull/1720), [@ioquatix]).
|
226
|
+
- Moved `Rack::Session` into [separate gem](https://github.com/rack/rack-session). ([#1805](https://github.com/rack/rack/pull/1805), [@ioquatix])
|
227
|
+
- `rackup -D` option to daemonizes no longer changes the working directory to the root. ([#1813](https://github.com/rack/rack/pull/1813), [@jeremyevans])
|
228
|
+
- The `x-forwarded-proto` header is now considered before the `x-forwarded-scheme` header for determining the forwarded protocol. `Rack::Request.x_forwarded_proto_priority` accessor has been added for configuring the priority of which header to check. ([#1809](https://github.com/rack/rack/issues/1809), [@jeremyevans])
|
229
|
+
- `Rack::Request.forwarded_authority` (and methods that call it, such as `host`) now returns the last authority in the forwarded header, instead of the first, as earlier forwarded authorities can be forged by clients. This restores the Rack 2.1 behavior. ([#1829](https://github.com/rack/rack/issues/1809), [@jeremyevans])
|
230
|
+
- Use lower case cookie attributes when creating cookies, and fold cookie attributes to lower case when reading cookies (specifically impacting `secure` and `httponly` attributes). ([#1849](https://github.com/rack/rack/pull/1849), [@ioquatix])
|
231
|
+
- The response array must now be mutable (non-frozen) so middleware can modify it without allocating a new Array,therefore reducing object allocations. ([#1887](https://github.com/rack/rack/pull/1887), [#1927](https://github.com/rack/rack/pull/1927), [@amatsuda], [@ioquatix])
|
232
|
+
- `rack.hijack?` (partial hijack) and `rack.hijack` (full hijack) are now independently optional. `rack.hijack_io` is no longer required/specified. ([#1939](https://github.com/rack/rack/pull/1939), [@ioquatix])
|
233
|
+
- Allow calling close on `rack.input`. ([#1956](https://github.com/rack/rack/pull/1956), [@ioquatix])
|
234
|
+
|
235
|
+
### Fixed
|
236
|
+
|
237
|
+
- Make Rack::MockResponse handle non-hash headers. ([#1629](https://github.com/rack/rack/issues/1629), [@jeremyevans])
|
238
|
+
- TempfileReaper now deletes temp files if application raises an exception. ([#1679](https://github.com/rack/rack/issues/1679), [@jeremyevans])
|
239
|
+
- Handle cookies with values that end in '=' ([#1645](https://github.com/rack/rack/pull/1645), [@lukaso](https://github.com/lukaso))
|
240
|
+
- Make `Rack::NullLogger` respond to `#fatal!` [@jeremyevans])
|
241
|
+
- Fix multipart filename generation for filenames that contain spaces. Encode spaces as "%20" instead of "+" which will be decoded properly by the multipart parser. ([#1736](https://github.com/rack/rack/pull/1645), [@muirdm](https://github.com/muirdm))
|
242
|
+
- `Rack::Request#scheme` returns `ws` or `wss` when one of the `X-Forwarded-Scheme` / `X-Forwarded-Proto` headers is set to `ws` or `wss`, respectively. ([#1730](https://github.com/rack/rack/issues/1730), [@erwanst](https://github.com/erwanst))
|
243
|
+
|
37
244
|
## [2.2.4] - 2022-06-30
|
38
245
|
|
39
246
|
- Better support for lower case headers in `Rack::ETag` middleware. ([#1919](https://github.com/rack/rack/pull/1919), [@ioquatix](https://github.com/ioquatix))
|
@@ -46,18 +253,18 @@ All notable changes to this project will be documented in this file. For info on
|
|
46
253
|
- [CVE-2022-30123] Fix shell escaping issue in Common Logger
|
47
254
|
- [CVE-2022-30122] Restrict parsing of broken MIME attachments
|
48
255
|
|
49
|
-
## [2.2.3] - 2020-
|
256
|
+
## [2.2.3] - 2020-06-15
|
50
257
|
|
51
258
|
### Security
|
52
259
|
|
53
|
-
- [CVE-2020-8184]
|
260
|
+
- [[CVE-2020-8184](https://nvd.nist.gov/vuln/detail/CVE-2020-8184)] Do not allow percent-encoded cookie name to override existing cookie names. BREAKING CHANGE: Accessing cookie names that require URL encoding with decoded name no longer works. ([@fletchto99](https://github.com/fletchto99))
|
54
261
|
|
55
262
|
## [2.2.2] - 2020-02-11
|
56
263
|
|
57
264
|
### Fixed
|
58
265
|
|
59
|
-
- Fix incorrect `Rack::Request#host` value. ([#1591](https://github.com/rack/rack/pull/1591), [@ioquatix]
|
60
|
-
- Revert `Rack::Handler::Thin` implementation. ([#1583](https://github.com/rack/rack/pull/1583), [@jeremyevans]
|
266
|
+
- Fix incorrect `Rack::Request#host` value. ([#1591](https://github.com/rack/rack/pull/1591), [@ioquatix])
|
267
|
+
- Revert `Rack::Handler::Thin` implementation. ([#1583](https://github.com/rack/rack/pull/1583), [@jeremyevans])
|
61
268
|
- Double assignment is still needed to prevent an "unused variable" warning. ([#1589](https://github.com/rack/rack/pull/1589), [@kamipo](https://github.com/kamipo))
|
62
269
|
- Fix to handle same_site option for session pool. ([#1587](https://github.com/rack/rack/pull/1587), [@kamipo](https://github.com/kamipo))
|
63
270
|
|
@@ -65,105 +272,111 @@ All notable changes to this project will be documented in this file. For info on
|
|
65
272
|
|
66
273
|
### Fixed
|
67
274
|
|
68
|
-
- Rework `Rack::Request#ip` to handle empty `forwarded_for`. ([#1577](https://github.com/rack/rack/pull/1577), [@ioquatix]
|
275
|
+
- Rework `Rack::Request#ip` to handle empty `forwarded_for`. ([#1577](https://github.com/rack/rack/pull/1577), [@ioquatix])
|
69
276
|
|
70
277
|
## [2.2.0] - 2020-02-08
|
71
278
|
|
72
279
|
### SPEC Changes
|
73
280
|
|
74
|
-
- `rack.session` request environment entry must respond to `to_hash` and return unfrozen Hash. ([@jeremyevans]
|
75
|
-
- Request environment cannot be frozen. ([@jeremyevans]
|
76
|
-
- CGI values in the request environment with non-ASCII characters must use ASCII-8BIT encoding. ([@jeremyevans]
|
77
|
-
- Improve SPEC/lint relating to SERVER_NAME, SERVER_PORT and HTTP_HOST. ([#1561](https://github.com/rack/rack/pull/1561), [@ioquatix]
|
281
|
+
- `rack.session` request environment entry must respond to `to_hash` and return unfrozen Hash. ([@jeremyevans])
|
282
|
+
- Request environment cannot be frozen. ([@jeremyevans])
|
283
|
+
- CGI values in the request environment with non-ASCII characters must use ASCII-8BIT encoding. ([@jeremyevans])
|
284
|
+
- Improve SPEC/lint relating to SERVER_NAME, SERVER_PORT and HTTP_HOST. ([#1561](https://github.com/rack/rack/pull/1561), [@ioquatix])
|
78
285
|
|
79
286
|
### Added
|
80
287
|
|
81
|
-
- `rackup` supports multiple `-r` options and will require all arguments. ([@jeremyevans]
|
288
|
+
- `rackup` supports multiple `-r` options and will require all arguments. ([@jeremyevans])
|
82
289
|
- `Server` supports an array of paths to require for the `:require` option. ([@khotta](https://github.com/khotta))
|
83
290
|
- `Files` supports multipart range requests. ([@fatkodima](https://github.com/fatkodima))
|
84
|
-
- `Multipart::UploadedFile` supports an IO-like object instead of using the filesystem, using `:filename` and `:io` options. ([@jeremyevans]
|
85
|
-
- `Multipart::UploadedFile` supports keyword arguments `:path`, `:content_type`, and `:binary` in addition to positional arguments. ([@jeremyevans]
|
86
|
-
- `Static` supports a `:cascade` option for calling the app if there is no matching file. ([@jeremyevans]
|
87
|
-
- `Session::Abstract::SessionHash#dig`. ([@jeremyevans]
|
88
|
-
- `Response.[]` and `MockResponse.[]` for creating instances using status, headers, and body. ([@ioquatix]
|
89
|
-
- Convenient cache and content type methods for `Rack::Response`. ([#1555](https://github.com/rack/rack/pull/1555), [@ioquatix]
|
291
|
+
- `Multipart::UploadedFile` supports an IO-like object instead of using the filesystem, using `:filename` and `:io` options. ([@jeremyevans])
|
292
|
+
- `Multipart::UploadedFile` supports keyword arguments `:path`, `:content_type`, and `:binary` in addition to positional arguments. ([@jeremyevans])
|
293
|
+
- `Static` supports a `:cascade` option for calling the app if there is no matching file. ([@jeremyevans])
|
294
|
+
- `Session::Abstract::SessionHash#dig`. ([@jeremyevans])
|
295
|
+
- `Response.[]` and `MockResponse.[]` for creating instances using status, headers, and body. ([@ioquatix])
|
296
|
+
- Convenient cache and content type methods for `Rack::Response`. ([#1555](https://github.com/rack/rack/pull/1555), [@ioquatix])
|
90
297
|
|
91
298
|
### Changed
|
92
299
|
|
93
|
-
- `Request#params` no longer rescues EOFError. ([@jeremyevans]
|
94
|
-
- `Directory` uses a streaming approach, significantly improving time to first byte for large directories. ([@jeremyevans]
|
95
|
-
- `Directory` no longer includes a Parent directory link in the root directory index. ([@jeremyevans]
|
96
|
-
- `QueryParser#parse_nested_query` uses original backtrace when reraising exception with new class. ([@jeremyevans]
|
97
|
-
- `ConditionalGet` follows RFC 7232 precedence if both If-None-Match and If-Modified-Since headers are provided. ([@jeremyevans]
|
300
|
+
- `Request#params` no longer rescues EOFError. ([@jeremyevans])
|
301
|
+
- `Directory` uses a streaming approach, significantly improving time to first byte for large directories. ([@jeremyevans])
|
302
|
+
- `Directory` no longer includes a Parent directory link in the root directory index. ([@jeremyevans])
|
303
|
+
- `QueryParser#parse_nested_query` uses original backtrace when reraising exception with new class. ([@jeremyevans])
|
304
|
+
- `ConditionalGet` follows RFC 7232 precedence if both If-None-Match and If-Modified-Since headers are provided. ([@jeremyevans])
|
98
305
|
- `.ru` files supports the `frozen-string-literal` magic comment. ([@eregon](https://github.com/eregon))
|
99
|
-
- Rely on autoload to load constants instead of requiring internal files, make sure to require 'rack' and not just 'rack/...'. ([@jeremyevans]
|
100
|
-
- `Etag` will continue sending ETag even if the response should not be cached. ([@henm](https://github.com/henm))
|
306
|
+
- Rely on autoload to load constants instead of requiring internal files, make sure to require 'rack' and not just 'rack/...'. ([@jeremyevans])
|
307
|
+
- BREAKING CHANGE: `Etag` will continue sending ETag even if the response should not be cached. Streaming no longer works without a workaround, see [#1619](https://github.com/rack/rack/issues/1619#issuecomment-848460528). ([@henm](https://github.com/henm))
|
101
308
|
- `Request#host_with_port` no longer includes a colon for a missing or empty port. ([@AlexWayfer](https://github.com/AlexWayfer))
|
102
|
-
- All handlers uses keywords arguments instead of an options hash argument. ([@ioquatix]
|
103
|
-
- `Files` handling of range requests no longer return a body that supports `to_path`, to ensure range requests are handled correctly. ([@jeremyevans]
|
104
|
-
- `Multipart::Generator` only includes `Content-Length` for files with paths, and `Content-Disposition` `filename` if the `UploadedFile` instance has one. ([@jeremyevans]
|
105
|
-
- `Request#ssl?` is true for the `wss` scheme (secure websockets). ([@jeremyevans]
|
106
|
-
- `Rack::HeaderHash` is memoized by default. ([#1549](https://github.com/rack/rack/pull/1549), [@ioquatix]
|
309
|
+
- All handlers uses keywords arguments instead of an options hash argument. ([@ioquatix])
|
310
|
+
- `Files` handling of range requests no longer return a body that supports `to_path`, to ensure range requests are handled correctly. ([@jeremyevans])
|
311
|
+
- `Multipart::Generator` only includes `Content-Length` for files with paths, and `Content-Disposition` `filename` if the `UploadedFile` instance has one. ([@jeremyevans])
|
312
|
+
- `Request#ssl?` is true for the `wss` scheme (secure websockets). ([@jeremyevans])
|
313
|
+
- `Rack::HeaderHash` is memoized by default. ([#1549](https://github.com/rack/rack/pull/1549), [@ioquatix])
|
107
314
|
- `Rack::Directory` allow directory traversal inside root directory. ([#1417](https://github.com/rack/rack/pull/1417), [@ThomasSevestre](https://github.com/ThomasSevestre))
|
108
|
-
- Sort encodings by server preference. ([#1184](https://github.com/rack/rack/pull/1184), [@ioquatix]
|
109
|
-
- Rework host/hostname/authority implementation in `Rack::Request`. `#host` and `#host_with_port` have been changed to correctly return IPv6 addresses formatted with square brackets, as defined by [RFC3986](https://tools.ietf.org/html/rfc3986#section-3.2.2). ([#1561](https://github.com/rack/rack/pull/1561), [@ioquatix]
|
110
|
-
- `Rack::Builder` parsing options on first `#\` line is deprecated. ([#1574](https://github.com/rack/rack/pull/1574), [@ioquatix]
|
315
|
+
- Sort encodings by server preference. ([#1184](https://github.com/rack/rack/pull/1184), [@ioquatix], [@wjordan](https://github.com/wjordan))
|
316
|
+
- Rework host/hostname/authority implementation in `Rack::Request`. `#host` and `#host_with_port` have been changed to correctly return IPv6 addresses formatted with square brackets, as defined by [RFC3986](https://tools.ietf.org/html/rfc3986#section-3.2.2). ([#1561](https://github.com/rack/rack/pull/1561), [@ioquatix])
|
317
|
+
- `Rack::Builder` parsing options on first `#\` line is deprecated. ([#1574](https://github.com/rack/rack/pull/1574), [@ioquatix])
|
111
318
|
|
112
319
|
### Removed
|
113
320
|
|
114
|
-
- `Directory#path` as it was not used and always returned nil. ([@jeremyevans]
|
115
|
-
- `BodyProxy#each` as it was only needed to work around a bug in Ruby <1.9.3. ([@jeremyevans]
|
321
|
+
- `Directory#path` as it was not used and always returned nil. ([@jeremyevans])
|
322
|
+
- `BodyProxy#each` as it was only needed to work around a bug in Ruby <1.9.3. ([@jeremyevans])
|
116
323
|
- `URLMap::INFINITY` and `URLMap::NEGATIVE_INFINITY`, in favor of `Float::INFINITY`. ([@ch1c0t](https://github.com/ch1c0t))
|
117
324
|
- Deprecation of `Rack::File`. It will be deprecated again in rack 2.2 or 3.0. ([@rafaelfranca](https://github.com/rafaelfranca))
|
118
|
-
- Support for Ruby 2.2 as it is well past EOL. ([@ioquatix]
|
119
|
-
- Remove `Rack::Files#response_body` as the implementation was broken. ([#1153](https://github.com/rack/rack/pull/1153), [@ioquatix]
|
120
|
-
- Remove `SERVER_ADDR` which was never part of the original SPEC. ([#1573](https://github.com/rack/rack/pull/1573), [@ioquatix]
|
325
|
+
- Support for Ruby 2.2 as it is well past EOL. ([@ioquatix])
|
326
|
+
- Remove `Rack::Files#response_body` as the implementation was broken. ([#1153](https://github.com/rack/rack/pull/1153), [@ioquatix])
|
327
|
+
- Remove `SERVER_ADDR` which was never part of the original SPEC. ([#1573](https://github.com/rack/rack/pull/1573), [@ioquatix])
|
121
328
|
|
122
329
|
### Fixed
|
123
330
|
|
124
|
-
- `Directory` correctly handles root paths containing glob metacharacters. ([@jeremyevans]
|
125
|
-
- `Cascade` uses a new response object for each call if initialized with no apps. ([@jeremyevans]
|
126
|
-
- `BodyProxy` correctly delegates keyword arguments to the body object on Ruby 2.7+. ([@jeremyevans]
|
127
|
-
- `BodyProxy#method` correctly handles methods delegated to the body object. ([@jeremyevans]
|
331
|
+
- `Directory` correctly handles root paths containing glob metacharacters. ([@jeremyevans])
|
332
|
+
- `Cascade` uses a new response object for each call if initialized with no apps. ([@jeremyevans])
|
333
|
+
- `BodyProxy` correctly delegates keyword arguments to the body object on Ruby 2.7+. ([@jeremyevans])
|
334
|
+
- `BodyProxy#method` correctly handles methods delegated to the body object. ([@jeremyevans])
|
128
335
|
- `Request#host` and `Request#host_with_port` handle IPv6 addresses correctly. ([@AlexWayfer](https://github.com/AlexWayfer))
|
129
|
-
- `Lint` checks when response hijacking that `rack.hijack` is called with a valid object. ([@jeremyevans]
|
130
|
-
- `Response#write` correctly updates `Content-Length` if initialized with a body. ([@jeremyevans]
|
336
|
+
- `Lint` checks when response hijacking that `rack.hijack` is called with a valid object. ([@jeremyevans])
|
337
|
+
- `Response#write` correctly updates `Content-Length` if initialized with a body. ([@jeremyevans])
|
131
338
|
- `CommonLogger` includes `SCRIPT_NAME` when logging. ([@Erol](https://github.com/Erol))
|
132
|
-
- `Utils.parse_nested_query` correctly handles empty queries, using an empty instance of the params class instead of a hash. ([@jeremyevans]
|
339
|
+
- `Utils.parse_nested_query` correctly handles empty queries, using an empty instance of the params class instead of a hash. ([@jeremyevans])
|
133
340
|
- `Directory` correctly escapes paths in links. ([@yous](https://github.com/yous))
|
134
|
-
- `Request#delete_cookie` and related `Utils` methods handle `:domain` and `:path` options in same call. ([@jeremyevans]
|
135
|
-
- `Request#delete_cookie` and related `Utils` methods do an exact match on `:domain` and `:path` options. ([@jeremyevans]
|
341
|
+
- `Request#delete_cookie` and related `Utils` methods handle `:domain` and `:path` options in same call. ([@jeremyevans])
|
342
|
+
- `Request#delete_cookie` and related `Utils` methods do an exact match on `:domain` and `:path` options. ([@jeremyevans])
|
136
343
|
- `Static` no longer adds headers when a gzipped file request has a 304 response. ([@chooh](https://github.com/chooh))
|
137
|
-
- `ContentLength` sets `Content-Length` response header even for bodies not responding to `to_ary`. ([@jeremyevans]
|
138
|
-
- Thin handler supports options passed directly to `Thin::Controllers::Controller`. ([@jeremyevans]
|
139
|
-
- WEBrick handler no longer ignores `:BindAddress` option. ([@jeremyevans]
|
140
|
-
- `ShowExceptions` handles invalid POST data. ([@jeremyevans]
|
141
|
-
- Basic authentication requires a password, even if the password is empty. ([@jeremyevans]
|
142
|
-
- `Lint` checks response is array with 3 elements, per SPEC. ([@jeremyevans]
|
344
|
+
- `ContentLength` sets `Content-Length` response header even for bodies not responding to `to_ary`. ([@jeremyevans])
|
345
|
+
- Thin handler supports options passed directly to `Thin::Controllers::Controller`. ([@jeremyevans])
|
346
|
+
- WEBrick handler no longer ignores `:BindAddress` option. ([@jeremyevans])
|
347
|
+
- `ShowExceptions` handles invalid POST data. ([@jeremyevans])
|
348
|
+
- Basic authentication requires a password, even if the password is empty. ([@jeremyevans])
|
349
|
+
- `Lint` checks response is array with 3 elements, per SPEC. ([@jeremyevans])
|
143
350
|
- Support for using `:SSLEnable` option when using WEBrick handler. (Gregor Melhorn)
|
144
|
-
- Close response body after buffering it when buffering. ([@ioquatix]
|
351
|
+
- Close response body after buffering it when buffering. ([@ioquatix])
|
145
352
|
- Only accept `;` as delimiter when parsing cookies. ([@mrageh](https://github.com/mrageh))
|
146
|
-
- `Utils::HeaderHash#clear` clears the name mapping as well. ([@raxoft](https://github.com/raxoft))
|
147
|
-
- Support for passing `nil` `Rack::Files.new`, which notably fixes Rails' current `ActiveStorage::FileServer` implementation. ([@ioquatix]
|
353
|
+
- `Utils::HeaderHash#clear` clears the name mapping as well. ([@raxoft](https://github.com/raxoft))
|
354
|
+
- Support for passing `nil` `Rack::Files.new`, which notably fixes Rails' current `ActiveStorage::FileServer` implementation. ([@ioquatix])
|
148
355
|
|
149
356
|
### Documentation
|
150
357
|
|
151
358
|
- CHANGELOG updates. ([@aupajo](https://github.com/aupajo))
|
152
359
|
- Added [CONTRIBUTING](CONTRIBUTING.md). ([@dblock](https://github.com/dblock))
|
153
360
|
|
361
|
+
## [2.0.9] - 2020-02-08
|
362
|
+
|
363
|
+
- Handle case where session id key is requested but missing ([@jeremyevans])
|
364
|
+
- Restore support for code relying on `SessionId#to_s`. ([@jeremyevans])
|
365
|
+
- Add support for `SameSite=None` cookie value. ([@hennikul](https://github.com/hennikul))
|
366
|
+
|
154
367
|
## [2.1.2] - 2020-01-27
|
155
368
|
|
156
369
|
- Fix multipart parser for some files to prevent denial of service ([@aiomaster](https://github.com/aiomaster))
|
157
370
|
- Fix `Rack::Builder#use` with keyword arguments ([@kamipo](https://github.com/kamipo))
|
158
|
-
- Skip deflating in Rack::Deflater if Content-Length is 0 ([@jeremyevans]
|
371
|
+
- Skip deflating in Rack::Deflater if Content-Length is 0 ([@jeremyevans])
|
159
372
|
- Remove `SessionHash#transform_keys`, no longer needed ([@pavel](https://github.com/pavel))
|
160
373
|
- Add to_hash to wrap Hash and Session classes ([@oleh-demyanyuk](https://github.com/oleh-demyanyuk))
|
161
|
-
- Handle case where session id key is requested but missing ([@jeremyevans]
|
374
|
+
- Handle case where session id key is requested but missing ([@jeremyevans])
|
162
375
|
|
163
376
|
## [2.1.1] - 2020-01-12
|
164
377
|
|
165
|
-
- Remove `Rack::Chunked` from `Rack::Server` default middleware. ([#1475](https://github.com/rack/rack/pull/1475), [@ioquatix]
|
166
|
-
- Restore support for code relying on `SessionId#to_s`. ([@jeremyevans]
|
378
|
+
- Remove `Rack::Chunked` from `Rack::Server` default middleware. ([#1475](https://github.com/rack/rack/pull/1475), [@ioquatix])
|
379
|
+
- Restore support for code relying on `SessionId#to_s`. ([@jeremyevans])
|
167
380
|
|
168
381
|
## [2.1.0] - 2020-01-10
|
169
382
|
|
@@ -180,13 +393,13 @@ All notable changes to this project will be documented in this file. For info on
|
|
180
393
|
- Add boot-time profiling capabilities to `rackup`. ([@tenderlove](https://github.com/tenderlove))
|
181
394
|
- Add multi mapping support for `X-Accel-Mappings` header. ([@yoshuki](https://github.com/yoshuki))
|
182
395
|
- Add `sync: false` option to `Rack::Deflater`. (Eric Wong)
|
183
|
-
- Add `Builder#freeze_app` to freeze application and all middleware instances. ([@jeremyevans]
|
396
|
+
- Add `Builder#freeze_app` to freeze application and all middleware instances. ([@jeremyevans])
|
184
397
|
- Add API to extract cookies from `Rack::MockResponse`. ([@petercline](https://github.com/petercline))
|
185
398
|
|
186
399
|
### Changed
|
187
400
|
|
188
|
-
- Don't propagate nil values from middleware. ([@ioquatix]
|
189
|
-
- Lazily initialize the response body and only buffer it if required. ([@ioquatix]
|
401
|
+
- Don't propagate nil values from middleware. ([@ioquatix])
|
402
|
+
- Lazily initialize the response body and only buffer it if required. ([@ioquatix])
|
190
403
|
- Fix deflater zlib buffer errors on empty body part. ([@felixbuenemann](https://github.com/felixbuenemann))
|
191
404
|
- Set `X-Accel-Redirect` to percent-encoded path. ([@diskkid](https://github.com/diskkid))
|
192
405
|
- Remove unnecessary buffer growing when parsing multipart. ([@tainoe](https://github.com/tainoe))
|
@@ -199,15 +412,15 @@ All notable changes to this project will be documented in this file. For info on
|
|
199
412
|
- Make `Utils.status_code` raise an error when the status symbol is invalid instead of `500`. ([@adambutler](https://github.com/adambutler))
|
200
413
|
- Rename `Request::SCHEME_WHITELIST` to `Request::ALLOWED_SCHEMES`.
|
201
414
|
- Make `Multipart::Parser.get_filename` accept files with `+` in their name. ([@lucaskanashiro](https://github.com/lucaskanashiro))
|
202
|
-
- Add Falcon to the default handler fallbacks. ([@ioquatix]
|
415
|
+
- Add Falcon to the default handler fallbacks. ([@ioquatix])
|
203
416
|
- Update codebase to avoid string mutations in preparation for `frozen_string_literals`. ([@pat](https://github.com/pat))
|
204
417
|
- Change `MockRequest#env_for` to rely on the input optionally responding to `#size` instead of `#length`. ([@janko](https://github.com/janko))
|
205
|
-
- Rename `Rack::File` -> `Rack::Files` and add deprecation notice. ([@postmodern](https://github.com/postmodern))
|
206
|
-
- Prefer Base64 “strict encoding” for Base64 cookies. ([@ioquatix]
|
418
|
+
- Rename `Rack::File` -> `Rack::Files` and add deprecation notice. ([@postmodern](https://github.com/postmodern))
|
419
|
+
- Prefer Base64 “strict encoding” for Base64 cookies. ([@ioquatix])
|
207
420
|
|
208
421
|
### Removed
|
209
422
|
|
210
|
-
- Remove `to_ary` from Response ([@tenderlove](https://github.com/tenderlove))
|
423
|
+
- BREAKING CHANGE: Remove `to_ary` from Response ([@tenderlove](https://github.com/tenderlove))
|
211
424
|
- Deprecate `Rack::Session::Memcache` in favor of `Rack::Session::Dalli` from dalli gem ([@fatkodima](https://github.com/fatkodima))
|
212
425
|
|
213
426
|
### Fixed
|
@@ -288,7 +501,7 @@ All notable changes to this project will be documented in this file. For info on
|
|
288
501
|
### Added
|
289
502
|
|
290
503
|
- Allow `Session::Abstract::SessionHash#fetch` to accept a block with a default value. ([@yannvanhalewyn](https://github.com/yannvanhalewyn))
|
291
|
-
- Add `Builder#freeze_app` to freeze application and all middleware. ([@jeremyevans]
|
504
|
+
- Add `Builder#freeze_app` to freeze application and all middleware. ([@jeremyevans])
|
292
505
|
|
293
506
|
### Changed
|
294
507
|
|
@@ -300,9 +513,9 @@ All notable changes to this project will be documented in this file. For info on
|
|
300
513
|
### Fixed
|
301
514
|
|
302
515
|
- Handle `NULL` bytes in multipart filenames. ([@casperisfine](https://github.com/casperisfine))
|
303
|
-
- Remove warnings due to miscapitalized global. ([@ioquatix]
|
516
|
+
- Remove warnings due to miscapitalized global. ([@ioquatix])
|
304
517
|
- Prevent exceptions caused by a race condition on multi-threaded servers. ([@sophiedeziel](https://github.com/sophiedeziel))
|
305
|
-
- Add RDoc as an explicit
|
518
|
+
- Add RDoc as an explicit dependency for `doc` group. ([@tonytonyjan](https://github.com/tonytonyjan))
|
306
519
|
- Record errors originating from `Multipart::Parser` in the `MethodOverride` middleware instead of letting them bubble up. ([@carlzulauf](https://github.com/carlzulauf))
|
307
520
|
- Remove remaining use of removed `Utils#bytesize` method from the `File` middleware. ([@brauliomartinezlm](https://github.com/brauliomartinezlm))
|
308
521
|
|
@@ -620,7 +833,7 @@ Items below this line are from the previously maintained HISTORY.md and NEWS.md
|
|
620
833
|
- Moved Auth::OpenID to rack-contrib.
|
621
834
|
- SPEC change that relaxes Lint slightly to allow subclasses of the
|
622
835
|
required types
|
623
|
-
- SPEC change to document rack.input binary mode in
|
836
|
+
- SPEC change to document rack.input binary mode in greater detail
|
624
837
|
- SPEC define optional rack.logger specification
|
625
838
|
- File servers support X-Cascade header
|
626
839
|
- Imported Config middleware
|
@@ -738,3 +951,10 @@ Items below this line are from the previously maintained HISTORY.md and NEWS.md
|
|
738
951
|
- Removed Rails adapter, was too alpha.
|
739
952
|
|
740
953
|
## [0.1] 2007-03-03
|
954
|
+
|
955
|
+
[@ioquatix]: https://github.com/ioquatix "Samuel Williams"
|
956
|
+
[@jeremyevans]: https://github.com/jeremyevans "Jeremy Evans"
|
957
|
+
[@amatsuda]: https://github.com/amatsuda "Akira Matsuda"
|
958
|
+
[@wjordan]: https://github.com/wjordan "Will Jordan"
|
959
|
+
[@BlakeWilliams]: https://github.com/BlakeWilliams "Blake Williams"
|
960
|
+
[@davidstosik]: https://github.com/davidstosik "David Stosik"
|