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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/Cargo.lock +102 -152
- data/crates/itsi_scheduler/Cargo.toml +1 -1
- data/crates/itsi_server/Cargo.lock +1 -1
- data/crates/itsi_server/Cargo.toml +4 -2
- data/crates/itsi_server/src/ruby_types/itsi_http_response.rs +46 -5
- data/crates/itsi_server/src/server/middleware_stack/middlewares/static_assets.rs +8 -6
- data/crates/itsi_server/src/services/mime_types.rs +2891 -1413
- data/crates/itsi_server/src/services/static_file_server.rs +140 -108
- data/crates/itsi_tracing/Cargo.toml +1 -1
- data/docs/content/itsi_scheduler/_index.md +15 -8
- data/examples/rails_with_static_assets/Gemfile.lock +2 -1
- data/gems/scheduler/Cargo.lock +11 -68
- data/gems/scheduler/itsi-scheduler.gemspec +1 -1
- data/gems/scheduler/lib/itsi/schedule_refinement.rb +2 -2
- data/gems/scheduler/lib/itsi/scheduler/version.rb +1 -1
- data/gems/server/Cargo.lock +101 -151
- data/gems/server/itsi-server.gemspec +3 -3
- data/gems/server/lib/itsi/server/config/middleware/static_assets.rb +3 -2
- data/gems/server/lib/itsi/server/config/middleware/static_response.rb +7 -6
- data/gems/server/lib/itsi/server/version.rb +1 -1
- data/gems/server/test/options/ruby_thread_request_backlog_size.rb +1 -1
- data/gems/server/test/rack/test_rack_server.rb +32 -1
- data/lib/itsi/version.rb +1 -1
- metadata +6 -6
@@ -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 =
|
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 |
|
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
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.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.
|
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.
|
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.
|
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.
|
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
|
-
-
|
1030
|
+
- LGPL-3.0
|
1031
1031
|
metadata:
|
1032
1032
|
homepage_uri: https://itsi.fyi
|
1033
1033
|
source_code_uri: https://github.com/wouterken/itsi
|