itsi 0.2.24 → 0.2.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/Cargo.lock +991 -939
- data/Dockerfile +2 -2
- data/crates/itsi_scheduler/Cargo.toml +1 -1
- data/crates/itsi_server/Cargo.lock +2 -2
- data/crates/itsi_server/Cargo.toml +1 -1
- data/gems/scheduler/Cargo.lock +4043 -509
- data/gems/scheduler/lib/itsi/scheduler/version.rb +1 -1
- data/gems/server/Cargo.lock +991 -939
- data/gems/server/lib/itsi/http_request.rb +8 -1
- data/gems/server/lib/itsi/server/version.rb +1 -1
- data/gems/server/test/rack/test_rack_server.rb +16 -0
- data/lib/itsi/version.rb +1 -1
- metadata +5 -5
|
@@ -80,7 +80,14 @@ module Itsi
|
|
|
80
80
|
env["rack.input"] = build_input_io
|
|
81
81
|
env["rack.hijack"] = self
|
|
82
82
|
each_header do |k, v|
|
|
83
|
-
|
|
83
|
+
rack_header = SPECIAL_RACK_HEADER_MAP[k] || RACK_HEADER_MAP[k]
|
|
84
|
+
if k == "cookie" && env.key?(rack_header)
|
|
85
|
+
# RFC 9113 allows HTTP/2 clients to split Cookie across fields. Rack
|
|
86
|
+
# expects one HTTP_COOKIE value, joined with "; " rather than comma.
|
|
87
|
+
env[rack_header] = "#{env[rack_header]}; #{v}"
|
|
88
|
+
else
|
|
89
|
+
env[rack_header] = v
|
|
90
|
+
end
|
|
84
91
|
end
|
|
85
92
|
env
|
|
86
93
|
end
|
|
@@ -201,6 +201,22 @@ class TestRackServer < Minitest::Test
|
|
|
201
201
|
end
|
|
202
202
|
end
|
|
203
203
|
|
|
204
|
+
def test_duplicate_cookie_request_headers_are_joined_for_rack
|
|
205
|
+
server(app_with_lint: lambda do |env|
|
|
206
|
+
[200, { "content-type" => "text/plain" }, [env["HTTP_COOKIE"].to_s]]
|
|
207
|
+
end) do |uri|
|
|
208
|
+
response = raw_http(
|
|
209
|
+
"GET / HTTP/1.1\r\n" \
|
|
210
|
+
"Host: #{uri.host}:#{uri.port}\r\n" \
|
|
211
|
+
"Cookie: _session_id=abc\r\n" \
|
|
212
|
+
"Cookie: _gat=1\r\n" \
|
|
213
|
+
"Connection: close\r\n\r\n"
|
|
214
|
+
)
|
|
215
|
+
|
|
216
|
+
assert_includes response, "\r\n\r\n_session_id=abc; _gat=1"
|
|
217
|
+
end
|
|
218
|
+
end
|
|
219
|
+
|
|
204
220
|
def test_multiple_headers
|
|
205
221
|
server(app_with_lint: lambda do |env|
|
|
206
222
|
[200, { "content-type" => "text/plain", "x-example" => "one, two, three" }, ["Multiple Headers"]]
|
data/lib/itsi/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: itsi
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.25
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Wouter Coppieters
|
|
@@ -15,28 +15,28 @@ dependencies:
|
|
|
15
15
|
requirements:
|
|
16
16
|
- - '='
|
|
17
17
|
- !ruby/object:Gem::Version
|
|
18
|
-
version: 0.2.
|
|
18
|
+
version: 0.2.25
|
|
19
19
|
type: :runtime
|
|
20
20
|
prerelease: false
|
|
21
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
22
22
|
requirements:
|
|
23
23
|
- - '='
|
|
24
24
|
- !ruby/object:Gem::Version
|
|
25
|
-
version: 0.2.
|
|
25
|
+
version: 0.2.25
|
|
26
26
|
- !ruby/object:Gem::Dependency
|
|
27
27
|
name: itsi-server
|
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|
|
29
29
|
requirements:
|
|
30
30
|
- - '='
|
|
31
31
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: 0.2.
|
|
32
|
+
version: 0.2.25
|
|
33
33
|
type: :runtime
|
|
34
34
|
prerelease: false
|
|
35
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
36
36
|
requirements:
|
|
37
37
|
- - '='
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
|
-
version: 0.2.
|
|
39
|
+
version: 0.2.25
|
|
40
40
|
description: Wrapper Gem for both the Itsi server and the Itsi Fiber scheduler
|
|
41
41
|
email:
|
|
42
42
|
- wc@pico.net.nz
|