itsi 0.2.13 → 0.2.15

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.
@@ -10,7 +10,7 @@ class TestRubyThreadRequestBacklogSize < Minitest::Test
10
10
  ruby_thread_request_backlog_size 1
11
11
  get("/foo"){|r| sleep 0.1; r.ok "ok" }
12
12
  end) do
13
- responses = 3.times.map{ Thread.new{ get_resp("/foo") } }.map(&:value)
13
+ responses = 10.times.map{ Thread.new{ get_resp("/foo") } }.map(&:value)
14
14
 
15
15
  assert_equal "ok", responses.first.body
16
16
  assert_equal "200", responses.first.code
@@ -356,7 +356,7 @@ class TestRackServer < Minitest::Test
356
356
  end
357
357
 
358
358
  def test_multi_field_headers
359
- server(app_with_lint: lambda do |env|
359
+ server(app_with_lint: lambda do |_|
360
360
  [200, { "content-type" => "text/plain", "x-example" => ["one, two, three", "four, five"] }, ["Multiple Field Headers"]]
361
361
  end) do
362
362
  response = get_resp("/")
@@ -365,4 +365,35 @@ class TestRackServer < Minitest::Test
365
365
  assert_equal "Multiple Field Headers", response.body
366
366
  end
367
367
  end
368
+
369
+ # For backwards compatibility with Rack-2, which uses "\n" for multiple values in headers.
370
+ # https://github.com/rack/rack/blob/df6c47357f6c6bec2d585f45f417285d813d9b3a/lib/rack/utils.rb#L271
371
+ #
372
+ # In Rack 3, the behavior has changed to using Arrays of Strings exclusively.
373
+ # Note we don't use Rack lint here, because it'll complain about the invalid header value.
374
+ def test_multiline_headers_legacy_cookie
375
+ cookies = "one\r\ntwo\n three\n\tfour\nfive\n\n"
376
+ server(app: ->(_) { [200, { "set-cookie" => cookies }, ["OK"]] }) do
377
+ resp = get_resp("/")
378
+ assert_equal "200", resp.code
379
+ # folded lines should coalesce; empty lines disappear
380
+ assert_equal %w[one two three four five], resp.get_fields("set-cookie")
381
+ end
382
+ end
383
+
384
+ def test_control_chars_are_stripped
385
+ evil = "good\nbad\x01bad\ngood"
386
+ server(app: ->(_) { [200, { "x-evil" => evil }, ["body"]] }) do
387
+ resp = get_resp("/")
388
+ assert_equal %w[good good], resp.get_fields("x-evil")
389
+ end
390
+ end
391
+
392
+ def test_rack3_array_is_untouched
393
+ server(app: ->(_) { [200,
394
+ { "set-cookie" => ["a=b", "c=d"] }, ["OK"] ] }) do
395
+ resp = get_resp("/")
396
+ assert_equal %w[a=b c=d], resp.get_fields("set-cookie")
397
+ end
398
+ end
368
399
  end
data/lib/itsi/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Itsi
2
- VERSION = '0.2.13'
2
+ VERSION = '0.2.15'
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.13
4
+ version: 0.2.15
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.13
18
+ version: 0.2.15
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.13
25
+ version: 0.2.15
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.13
32
+ version: 0.2.15
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.13
39
+ version: 0.2.15
40
40
  description: Wrapper Gem for both the Itsi server and the Itsi Fiber scheduler
41
41
  email:
42
42
  - wc@pico.net.nz
@@ -1027,7 +1027,7 @@ files:
1027
1027
  - tasks.txt
1028
1028
  homepage: https://itsi.fyi
1029
1029
  licenses:
1030
- - MIT
1030
+ - LGPL-3.0
1031
1031
  metadata:
1032
1032
  homepage_uri: https://itsi.fyi
1033
1033
  source_code_uri: https://github.com/wouterken/itsi