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.
@@ -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
- env[SPECIAL_RACK_HEADER_MAP[k] || RACK_HEADER_MAP[k]] = v
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
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Itsi
4
4
  class Server
5
- VERSION = "0.2.24"
5
+ VERSION = "0.2.25"
6
6
  end
7
7
  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
@@ -1,3 +1,3 @@
1
1
  module Itsi
2
- VERSION = "0.2.24"
2
+ VERSION = "0.2.25"
3
3
  end
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.24
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.24
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.24
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.24
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.24
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