itsi-server 0.2.15 → 0.2.17

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.
Files changed (79) hide show
  1. checksums.yaml +4 -4
  2. data/Cargo.lock +75 -73
  3. data/exe/itsi +6 -1
  4. data/ext/itsi_acme/Cargo.toml +1 -1
  5. data/ext/itsi_scheduler/Cargo.toml +1 -1
  6. data/ext/itsi_server/Cargo.lock +1 -1
  7. data/ext/itsi_server/Cargo.toml +3 -1
  8. data/ext/itsi_server/extconf.rb +3 -1
  9. data/ext/itsi_server/src/lib.rs +7 -1
  10. data/ext/itsi_server/src/ruby_types/itsi_body_proxy/mod.rs +2 -0
  11. data/ext/itsi_server/src/ruby_types/itsi_grpc_call.rs +6 -6
  12. data/ext/itsi_server/src/ruby_types/itsi_grpc_response_stream/mod.rs +14 -13
  13. data/ext/itsi_server/src/ruby_types/itsi_http_request.rs +71 -42
  14. data/ext/itsi_server/src/ruby_types/itsi_http_response.rs +151 -152
  15. data/ext/itsi_server/src/ruby_types/itsi_server/file_watcher.rs +6 -15
  16. data/ext/itsi_server/src/ruby_types/itsi_server/itsi_server_config.rs +32 -6
  17. data/ext/itsi_server/src/ruby_types/itsi_server.rs +1 -1
  18. data/ext/itsi_server/src/server/binds/listener.rs +49 -8
  19. data/ext/itsi_server/src/server/frame_stream.rs +142 -0
  20. data/ext/itsi_server/src/server/http_message_types.rs +143 -10
  21. data/ext/itsi_server/src/server/io_stream.rs +28 -5
  22. data/ext/itsi_server/src/server/lifecycle_event.rs +1 -1
  23. data/ext/itsi_server/src/server/middleware_stack/middlewares/auth_basic.rs +2 -3
  24. data/ext/itsi_server/src/server/middleware_stack/middlewares/compression.rs +8 -10
  25. data/ext/itsi_server/src/server/middleware_stack/middlewares/cors.rs +2 -3
  26. data/ext/itsi_server/src/server/middleware_stack/middlewares/csp.rs +3 -3
  27. data/ext/itsi_server/src/server/middleware_stack/middlewares/error_response/default_responses.rs +54 -58
  28. data/ext/itsi_server/src/server/middleware_stack/middlewares/error_response.rs +6 -9
  29. data/ext/itsi_server/src/server/middleware_stack/middlewares/etag.rs +27 -42
  30. data/ext/itsi_server/src/server/middleware_stack/middlewares/log_requests.rs +65 -14
  31. data/ext/itsi_server/src/server/middleware_stack/middlewares/max_body.rs +1 -1
  32. data/ext/itsi_server/src/server/middleware_stack/middlewares/proxy.rs +8 -11
  33. data/ext/itsi_server/src/server/middleware_stack/middlewares/rate_limit.rs +21 -8
  34. data/ext/itsi_server/src/server/middleware_stack/middlewares/redirect.rs +2 -3
  35. data/ext/itsi_server/src/server/middleware_stack/middlewares/ruby_app.rs +1 -5
  36. data/ext/itsi_server/src/server/middleware_stack/middlewares/static_assets.rs +1 -2
  37. data/ext/itsi_server/src/server/middleware_stack/middlewares/static_response.rs +13 -6
  38. data/ext/itsi_server/src/server/mod.rs +1 -0
  39. data/ext/itsi_server/src/server/process_worker.rs +5 -5
  40. data/ext/itsi_server/src/server/serve_strategy/acceptor.rs +100 -0
  41. data/ext/itsi_server/src/server/serve_strategy/cluster_mode.rs +87 -31
  42. data/ext/itsi_server/src/server/serve_strategy/mod.rs +1 -0
  43. data/ext/itsi_server/src/server/serve_strategy/single_mode.rs +166 -206
  44. data/ext/itsi_server/src/server/signal.rs +37 -9
  45. data/ext/itsi_server/src/server/thread_worker.rs +92 -70
  46. data/ext/itsi_server/src/services/itsi_http_service.rs +67 -62
  47. data/ext/itsi_server/src/services/mime_types.rs +185 -183
  48. data/ext/itsi_server/src/services/rate_limiter.rs +16 -34
  49. data/ext/itsi_server/src/services/static_file_server.rs +35 -60
  50. data/lib/itsi/http_request.rb +31 -39
  51. data/lib/itsi/http_response.rb +5 -0
  52. data/lib/itsi/rack_env_pool.rb +59 -0
  53. data/lib/itsi/server/config/config_helpers.rb +1 -2
  54. data/lib/itsi/server/config/dsl.rb +5 -4
  55. data/lib/itsi/server/config/middleware/etag.md +3 -7
  56. data/lib/itsi/server/config/middleware/etag.rb +2 -4
  57. data/lib/itsi/server/config/middleware/proxy.rb +1 -1
  58. data/lib/itsi/server/config/middleware/rackup_file.rb +2 -2
  59. data/lib/itsi/server/config/options/auto_reload_config.rb +6 -2
  60. data/lib/itsi/server/config/options/include.rb +5 -2
  61. data/lib/itsi/server/config/options/listen_backlog.rb +1 -1
  62. data/lib/itsi/server/config/options/pipeline_flush.md +16 -0
  63. data/lib/itsi/server/config/options/pipeline_flush.rb +19 -0
  64. data/lib/itsi/server/config/options/send_buffer_size.md +15 -0
  65. data/lib/itsi/server/config/options/send_buffer_size.rb +19 -0
  66. data/lib/itsi/server/config/options/writev.md +25 -0
  67. data/lib/itsi/server/config/options/writev.rb +19 -0
  68. data/lib/itsi/server/config.rb +43 -31
  69. data/lib/itsi/server/default_config/Itsi.rb +1 -4
  70. data/lib/itsi/server/grpc/grpc_call.rb +2 -0
  71. data/lib/itsi/server/grpc/grpc_interface.rb +2 -2
  72. data/lib/itsi/server/rack/handler/itsi.rb +3 -1
  73. data/lib/itsi/server/rack_interface.rb +17 -12
  74. data/lib/itsi/server/route_tester.rb +1 -1
  75. data/lib/itsi/server/scheduler_interface.rb +2 -0
  76. data/lib/itsi/server/version.rb +1 -1
  77. data/lib/itsi/server.rb +1 -0
  78. data/lib/ruby_lsp/itsi/addon.rb +12 -13
  79. metadata +10 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 839060ed768988b5230a345dc4820dd16f025d95a0e0392eb01e9e446aa912bb
4
- data.tar.gz: ddc0c5c09b6d883094b6bfcf62d31a66493928aec61bc9cf4cb82f742f3f99e1
3
+ metadata.gz: b8c75e7602b936f8ca0140844efef4617149bcd9228826e93cecec3673cba14e
4
+ data.tar.gz: ec9f4ba2c83ab3a0e6683ca7cce2e029f0c62224db9ba3a058caffc30be01504
5
5
  SHA512:
6
- metadata.gz: da0187a1d822b7da1b30ac352fe1914a9f1f791f33674c19511e491576c87c665cba9b86d4f7699bf2c3acc9cf797a457d6b2e273a8831da24ad3f05b60c0e8e
7
- data.tar.gz: 6e7a8a000821d26e438b2c750ad87011176e75f6341311aeb41dbdc6ef952c70733a3c9d7ddbc9fd500e70287718760e95140b43b2657c6ad23413470d9aa1bf
6
+ metadata.gz: 9d2f60a69e5cf77986802f15c6168b27a74525fbfa2a8470e9fc28ab3e4f9ff7481ec372099298edb474ab9e7e5da555e6b295422ba3b2e2529cb83ff6a38ff4
7
+ data.tar.gz: 8c833ed1c2da13fd48b5895d334bd548bd651218ec9be952190f45b2b455745240276e090e5a5a621155e73cb8e39a9859437412af04741d7d8cb357e2a0da28
data/Cargo.lock CHANGED
@@ -24,7 +24,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
24
24
  checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
25
25
  dependencies = [
26
26
  "cfg-if",
27
- "getrandom 0.2.15",
27
+ "getrandom 0.2.16",
28
28
  "once_cell",
29
29
  "version_check",
30
30
  "zerocopy 0.7.35",
@@ -176,7 +176,7 @@ checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490"
176
176
  dependencies = [
177
177
  "proc-macro2",
178
178
  "quote",
179
- "syn 2.0.100",
179
+ "syn 2.0.101",
180
180
  "synstructure",
181
181
  ]
182
182
 
@@ -188,7 +188,7 @@ checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7"
188
188
  dependencies = [
189
189
  "proc-macro2",
190
190
  "quote",
191
- "syn 2.0.100",
191
+ "syn 2.0.101",
192
192
  ]
193
193
 
194
194
  [[package]]
@@ -205,9 +205,9 @@ dependencies = [
205
205
 
206
206
  [[package]]
207
207
  name = "async-compression"
208
- version = "0.4.22"
208
+ version = "0.4.23"
209
209
  source = "registry+https://github.com/rust-lang/crates.io-index"
210
- checksum = "59a194f9d963d8099596278594b3107448656ba73831c9d8c783e613ce86da64"
210
+ checksum = "b37fc50485c4f3f736a4fb14199f6d5f5ba008d7f28fe710306c92780f004c07"
211
211
  dependencies = [
212
212
  "brotli",
213
213
  "flate2",
@@ -228,7 +228,7 @@ checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5"
228
228
  dependencies = [
229
229
  "proc-macro2",
230
230
  "quote",
231
- "syn 2.0.100",
231
+ "syn 2.0.101",
232
232
  ]
233
233
 
234
234
  [[package]]
@@ -423,7 +423,7 @@ dependencies = [
423
423
  "regex",
424
424
  "rustc-hash 1.1.0",
425
425
  "shlex",
426
- "syn 2.0.100",
426
+ "syn 2.0.101",
427
427
  "which",
428
428
  ]
429
429
 
@@ -469,9 +469,9 @@ dependencies = [
469
469
 
470
470
  [[package]]
471
471
  name = "brotli"
472
- version = "7.0.0"
472
+ version = "8.0.0"
473
473
  source = "registry+https://github.com/rust-lang/crates.io-index"
474
- checksum = "cc97b8f16f944bba54f0433f07e30be199b6dc2bd25937444bbad560bcea29bd"
474
+ checksum = "cf19e729cdbd51af9a397fb9ef8ac8378007b797f8273cfbfdf45dcaa316167b"
475
475
  dependencies = [
476
476
  "alloc-no-stdlib",
477
477
  "alloc-stdlib",
@@ -480,9 +480,9 @@ dependencies = [
480
480
 
481
481
  [[package]]
482
482
  name = "brotli-decompressor"
483
- version = "4.0.3"
483
+ version = "5.0.0"
484
484
  source = "registry+https://github.com/rust-lang/crates.io-index"
485
- checksum = "a334ef7c9e23abf0ce748e8cd309037da93e606ad52eb372e4ce327a0dcfbdfd"
485
+ checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03"
486
486
  dependencies = [
487
487
  "alloc-no-stdlib",
488
488
  "alloc-stdlib",
@@ -518,9 +518,9 @@ checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a"
518
518
 
519
519
  [[package]]
520
520
  name = "cc"
521
- version = "1.2.19"
521
+ version = "1.2.20"
522
522
  source = "registry+https://github.com/rust-lang/crates.io-index"
523
- checksum = "8e3a13707ac958681c13b39b458c073d0d9bc8a22cb1b2f4c8e55eb72c13f362"
523
+ checksum = "04da6a0d40b948dfc4fa8f5bbf402b0fc1a64a28dbf7d12ffd683550f2c1b63a"
524
524
  dependencies = [
525
525
  "jobserver",
526
526
  "libc",
@@ -550,9 +550,9 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
550
550
 
551
551
  [[package]]
552
552
  name = "chrono"
553
- version = "0.4.40"
553
+ version = "0.4.41"
554
554
  source = "registry+https://github.com/rust-lang/crates.io-index"
555
- checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c"
555
+ checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d"
556
556
  dependencies = [
557
557
  "android-tzdata",
558
558
  "iana-time-zone",
@@ -629,7 +629,7 @@ dependencies = [
629
629
  "heck 0.5.0",
630
630
  "proc-macro2",
631
631
  "quote",
632
- "syn 2.0.100",
632
+ "syn 2.0.101",
633
633
  ]
634
634
 
635
635
  [[package]]
@@ -821,7 +821,7 @@ checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3"
821
821
  dependencies = [
822
822
  "proc-macro2",
823
823
  "quote",
824
- "syn 2.0.100",
824
+ "syn 2.0.101",
825
825
  "unicode-xid",
826
826
  ]
827
827
 
@@ -865,7 +865,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
865
865
  dependencies = [
866
866
  "proc-macro2",
867
867
  "quote",
868
- "syn 2.0.100",
868
+ "syn 2.0.101",
869
869
  ]
870
870
 
871
871
  [[package]]
@@ -1060,7 +1060,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
1060
1060
  dependencies = [
1061
1061
  "proc-macro2",
1062
1062
  "quote",
1063
- "syn 2.0.100",
1063
+ "syn 2.0.101",
1064
1064
  ]
1065
1065
 
1066
1066
  [[package]]
@@ -1105,9 +1105,9 @@ dependencies = [
1105
1105
 
1106
1106
  [[package]]
1107
1107
  name = "getrandom"
1108
- version = "0.2.15"
1108
+ version = "0.2.16"
1109
1109
  source = "registry+https://github.com/rust-lang/crates.io-index"
1110
- checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
1110
+ checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592"
1111
1111
  dependencies = [
1112
1112
  "cfg-if",
1113
1113
  "js-sys",
@@ -1195,9 +1195,9 @@ dependencies = [
1195
1195
 
1196
1196
  [[package]]
1197
1197
  name = "hashbrown"
1198
- version = "0.15.2"
1198
+ version = "0.15.3"
1199
1199
  source = "registry+https://github.com/rust-lang/crates.io-index"
1200
- checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289"
1200
+ checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3"
1201
1201
 
1202
1202
  [[package]]
1203
1203
  name = "headers"
@@ -1552,7 +1552,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6"
1552
1552
  dependencies = [
1553
1553
  "proc-macro2",
1554
1554
  "quote",
1555
- "syn 2.0.100",
1555
+ "syn 2.0.101",
1556
1556
  ]
1557
1557
 
1558
1558
  [[package]]
@@ -1644,7 +1644,7 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
1644
1644
 
1645
1645
  [[package]]
1646
1646
  name = "itsi-server"
1647
- version = "0.2.15"
1647
+ version = "0.2.17"
1648
1648
  dependencies = [
1649
1649
  "argon2",
1650
1650
  "async-channel",
@@ -1660,6 +1660,7 @@ dependencies = [
1660
1660
  "either",
1661
1661
  "fs2",
1662
1662
  "futures",
1663
+ "futures-util",
1663
1664
  "globset",
1664
1665
  "http 1.3.1",
1665
1666
  "http-body-util",
@@ -1695,6 +1696,7 @@ dependencies = [
1695
1696
  "serde_magnus",
1696
1697
  "sha-crypt",
1697
1698
  "sha2",
1699
+ "smallvec",
1698
1700
  "socket2",
1699
1701
  "sysinfo",
1700
1702
  "tempfile",
@@ -1923,7 +1925,7 @@ checksum = "5968c820e2960565f647819f5928a42d6e874551cab9d88d75e3e0660d7f71e3"
1923
1925
  dependencies = [
1924
1926
  "proc-macro2",
1925
1927
  "quote",
1926
- "syn 2.0.100",
1928
+ "syn 2.0.101",
1927
1929
  ]
1928
1930
 
1929
1931
  [[package]]
@@ -2271,7 +2273,7 @@ dependencies = [
2271
2273
  "phf_shared",
2272
2274
  "proc-macro2",
2273
2275
  "quote",
2274
- "syn 2.0.100",
2276
+ "syn 2.0.101",
2275
2277
  ]
2276
2278
 
2277
2279
  [[package]]
@@ -2300,7 +2302,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861"
2300
2302
  dependencies = [
2301
2303
  "proc-macro2",
2302
2304
  "quote",
2303
- "syn 2.0.100",
2305
+ "syn 2.0.101",
2304
2306
  ]
2305
2307
 
2306
2308
  [[package]]
@@ -2333,7 +2335,7 @@ version = "0.2.21"
2333
2335
  source = "registry+https://github.com/rust-lang/crates.io-index"
2334
2336
  checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
2335
2337
  dependencies = [
2336
- "zerocopy 0.8.24",
2338
+ "zerocopy 0.8.25",
2337
2339
  ]
2338
2340
 
2339
2341
  [[package]]
@@ -2343,7 +2345,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
2343
2345
  checksum = "664ec5419c51e34154eec046ebcba56312d5a2fc3b09a06da188e1ad21afadf6"
2344
2346
  dependencies = [
2345
2347
  "proc-macro2",
2346
- "syn 2.0.100",
2348
+ "syn 2.0.101",
2347
2349
  ]
2348
2350
 
2349
2351
  [[package]]
@@ -2413,9 +2415,9 @@ dependencies = [
2413
2415
 
2414
2416
  [[package]]
2415
2417
  name = "quinn-proto"
2416
- version = "0.11.10"
2418
+ version = "0.11.11"
2417
2419
  source = "registry+https://github.com/rust-lang/crates.io-index"
2418
- checksum = "b820744eb4dc9b57a3398183639c511b5a26d2ed702cedd3febaa1393caa22cc"
2420
+ checksum = "bcbafbbdbb0f638fe3f35f3c56739f77a8a1d070cb25603226c83339b391472b"
2419
2421
  dependencies = [
2420
2422
  "bytes",
2421
2423
  "getrandom 0.3.2",
@@ -2433,9 +2435,9 @@ dependencies = [
2433
2435
 
2434
2436
  [[package]]
2435
2437
  name = "quinn-udp"
2436
- version = "0.5.11"
2438
+ version = "0.5.12"
2437
2439
  source = "registry+https://github.com/rust-lang/crates.io-index"
2438
- checksum = "541d0f57c6ec747a90738a52741d3221f7960e8ac2f0ff4b1a63680e033b4ab5"
2440
+ checksum = "ee4e529991f949c5e25755532370b8af5d114acae52326361d68d47af64aa842"
2439
2441
  dependencies = [
2440
2442
  "cfg_aliases",
2441
2443
  "libc",
@@ -2518,7 +2520,7 @@ version = "0.6.4"
2518
2520
  source = "registry+https://github.com/rust-lang/crates.io-index"
2519
2521
  checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
2520
2522
  dependencies = [
2521
- "getrandom 0.2.15",
2523
+ "getrandom 0.2.16",
2522
2524
  ]
2523
2525
 
2524
2526
  [[package]]
@@ -2571,7 +2573,7 @@ dependencies = [
2571
2573
  "quote",
2572
2574
  "regex",
2573
2575
  "shell-words",
2574
- "syn 2.0.100",
2576
+ "syn 2.0.101",
2575
2577
  ]
2576
2578
 
2577
2579
  [[package]]
@@ -2637,7 +2639,7 @@ version = "0.5.0"
2637
2639
  source = "registry+https://github.com/rust-lang/crates.io-index"
2638
2640
  checksum = "dd6f9d3d47bdd2ad6945c5015a226ec6155d0bcdfd8f7cd29f86b71f8de99d2b"
2639
2641
  dependencies = [
2640
- "getrandom 0.2.15",
2642
+ "getrandom 0.2.16",
2641
2643
  "libredox",
2642
2644
  "thiserror 2.0.12",
2643
2645
  ]
@@ -2739,7 +2741,7 @@ checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7"
2739
2741
  dependencies = [
2740
2742
  "cc",
2741
2743
  "cfg-if",
2742
- "getrandom 0.2.15",
2744
+ "getrandom 0.2.16",
2743
2745
  "libc",
2744
2746
  "untrusted",
2745
2747
  "windows-sys 0.52.0",
@@ -2787,9 +2789,9 @@ dependencies = [
2787
2789
 
2788
2790
  [[package]]
2789
2791
  name = "rustix"
2790
- version = "1.0.5"
2792
+ version = "1.0.7"
2791
2793
  source = "registry+https://github.com/rust-lang/crates.io-index"
2792
- checksum = "d97817398dd4bb2e6da002002db259209759911da105da92bec29ccb12cf58bf"
2794
+ checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266"
2793
2795
  dependencies = [
2794
2796
  "bitflags 2.9.0",
2795
2797
  "errno",
@@ -2953,7 +2955,7 @@ checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
2953
2955
  dependencies = [
2954
2956
  "proc-macro2",
2955
2957
  "quote",
2956
- "syn 2.0.100",
2958
+ "syn 2.0.101",
2957
2959
  ]
2958
2960
 
2959
2961
  [[package]]
@@ -3032,9 +3034,9 @@ checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d"
3032
3034
 
3033
3035
  [[package]]
3034
3036
  name = "sha2"
3035
- version = "0.10.8"
3037
+ version = "0.10.9"
3036
3038
  source = "registry+https://github.com/rust-lang/crates.io-index"
3037
- checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
3039
+ checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283"
3038
3040
  dependencies = [
3039
3041
  "cfg-if",
3040
3042
  "cpufeatures",
@@ -3193,9 +3195,9 @@ dependencies = [
3193
3195
 
3194
3196
  [[package]]
3195
3197
  name = "syn"
3196
- version = "2.0.100"
3198
+ version = "2.0.101"
3197
3199
  source = "registry+https://github.com/rust-lang/crates.io-index"
3198
- checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0"
3200
+ checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf"
3199
3201
  dependencies = [
3200
3202
  "proc-macro2",
3201
3203
  "quote",
@@ -3213,13 +3215,13 @@ dependencies = [
3213
3215
 
3214
3216
  [[package]]
3215
3217
  name = "synstructure"
3216
- version = "0.13.1"
3218
+ version = "0.13.2"
3217
3219
  source = "registry+https://github.com/rust-lang/crates.io-index"
3218
- checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971"
3220
+ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
3219
3221
  dependencies = [
3220
3222
  "proc-macro2",
3221
3223
  "quote",
3222
- "syn 2.0.100",
3224
+ "syn 2.0.101",
3223
3225
  ]
3224
3226
 
3225
3227
  [[package]]
@@ -3251,7 +3253,7 @@ dependencies = [
3251
3253
  "fastrand",
3252
3254
  "getrandom 0.3.2",
3253
3255
  "once_cell",
3254
- "rustix 1.0.5",
3256
+ "rustix 1.0.7",
3255
3257
  "windows-sys 0.59.0",
3256
3258
  ]
3257
3259
 
@@ -3290,7 +3292,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
3290
3292
  dependencies = [
3291
3293
  "proc-macro2",
3292
3294
  "quote",
3293
- "syn 2.0.100",
3295
+ "syn 2.0.101",
3294
3296
  ]
3295
3297
 
3296
3298
  [[package]]
@@ -3301,7 +3303,7 @@ checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d"
3301
3303
  dependencies = [
3302
3304
  "proc-macro2",
3303
3305
  "quote",
3304
- "syn 2.0.100",
3306
+ "syn 2.0.101",
3305
3307
  ]
3306
3308
 
3307
3309
  [[package]]
@@ -3398,7 +3400,7 @@ checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8"
3398
3400
  dependencies = [
3399
3401
  "proc-macro2",
3400
3402
  "quote",
3401
- "syn 2.0.100",
3403
+ "syn 2.0.101",
3402
3404
  ]
3403
3405
 
3404
3406
  [[package]]
@@ -3436,9 +3438,9 @@ dependencies = [
3436
3438
 
3437
3439
  [[package]]
3438
3440
  name = "tokio-util"
3439
- version = "0.7.14"
3441
+ version = "0.7.15"
3440
3442
  source = "registry+https://github.com/rust-lang/crates.io-index"
3441
- checksum = "6b9590b93e6fcc1739458317cccd391ad3955e2bde8913edf6f95f9e65a8f034"
3443
+ checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df"
3442
3444
  dependencies = [
3443
3445
  "bytes",
3444
3446
  "futures-core",
@@ -3508,7 +3510,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d"
3508
3510
  dependencies = [
3509
3511
  "proc-macro2",
3510
3512
  "quote",
3511
- "syn 2.0.100",
3513
+ "syn 2.0.101",
3512
3514
  ]
3513
3515
 
3514
3516
  [[package]]
@@ -3768,7 +3770,7 @@ dependencies = [
3768
3770
  "log",
3769
3771
  "proc-macro2",
3770
3772
  "quote",
3771
- "syn 2.0.100",
3773
+ "syn 2.0.101",
3772
3774
  "wasm-bindgen-shared",
3773
3775
  ]
3774
3776
 
@@ -3803,7 +3805,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de"
3803
3805
  dependencies = [
3804
3806
  "proc-macro2",
3805
3807
  "quote",
3806
- "syn 2.0.100",
3808
+ "syn 2.0.101",
3807
3809
  "wasm-bindgen-backend",
3808
3810
  "wasm-bindgen-shared",
3809
3811
  ]
@@ -3852,9 +3854,9 @@ dependencies = [
3852
3854
 
3853
3855
  [[package]]
3854
3856
  name = "webpki-roots"
3855
- version = "0.26.8"
3857
+ version = "0.26.10"
3856
3858
  source = "registry+https://github.com/rust-lang/crates.io-index"
3857
- checksum = "2210b291f7ea53617fbafcc4939f10914214ec15aace5ba62293a668f322c5c9"
3859
+ checksum = "37493cadf42a2a939ed404698ded7fb378bf301b5011f973361779a3a74f8c93"
3858
3860
  dependencies = [
3859
3861
  "rustls-pki-types",
3860
3862
  ]
@@ -3945,7 +3947,7 @@ checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7"
3945
3947
  dependencies = [
3946
3948
  "proc-macro2",
3947
3949
  "quote",
3948
- "syn 2.0.100",
3950
+ "syn 2.0.101",
3949
3951
  ]
3950
3952
 
3951
3953
  [[package]]
@@ -3956,7 +3958,7 @@ checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836"
3956
3958
  dependencies = [
3957
3959
  "proc-macro2",
3958
3960
  "quote",
3959
- "syn 2.0.100",
3961
+ "syn 2.0.101",
3960
3962
  ]
3961
3963
 
3962
3964
  [[package]]
@@ -3967,7 +3969,7 @@ checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7"
3967
3969
  dependencies = [
3968
3970
  "proc-macro2",
3969
3971
  "quote",
3970
- "syn 2.0.100",
3972
+ "syn 2.0.101",
3971
3973
  ]
3972
3974
 
3973
3975
  [[package]]
@@ -3978,7 +3980,7 @@ checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8"
3978
3980
  dependencies = [
3979
3981
  "proc-macro2",
3980
3982
  "quote",
3981
- "syn 2.0.100",
3983
+ "syn 2.0.101",
3982
3984
  ]
3983
3985
 
3984
3986
  [[package]]
@@ -4314,7 +4316,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154"
4314
4316
  dependencies = [
4315
4317
  "proc-macro2",
4316
4318
  "quote",
4317
- "syn 2.0.100",
4319
+ "syn 2.0.101",
4318
4320
  "synstructure",
4319
4321
  ]
4320
4322
 
@@ -4329,11 +4331,11 @@ dependencies = [
4329
4331
 
4330
4332
  [[package]]
4331
4333
  name = "zerocopy"
4332
- version = "0.8.24"
4334
+ version = "0.8.25"
4333
4335
  source = "registry+https://github.com/rust-lang/crates.io-index"
4334
- checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879"
4336
+ checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb"
4335
4337
  dependencies = [
4336
- "zerocopy-derive 0.8.24",
4338
+ "zerocopy-derive 0.8.25",
4337
4339
  ]
4338
4340
 
4339
4341
  [[package]]
@@ -4344,18 +4346,18 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
4344
4346
  dependencies = [
4345
4347
  "proc-macro2",
4346
4348
  "quote",
4347
- "syn 2.0.100",
4349
+ "syn 2.0.101",
4348
4350
  ]
4349
4351
 
4350
4352
  [[package]]
4351
4353
  name = "zerocopy-derive"
4352
- version = "0.8.24"
4354
+ version = "0.8.25"
4353
4355
  source = "registry+https://github.com/rust-lang/crates.io-index"
4354
- checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be"
4356
+ checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef"
4355
4357
  dependencies = [
4356
4358
  "proc-macro2",
4357
4359
  "quote",
4358
- "syn 2.0.100",
4360
+ "syn 2.0.101",
4359
4361
  ]
4360
4362
 
4361
4363
  [[package]]
@@ -4375,7 +4377,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
4375
4377
  dependencies = [
4376
4378
  "proc-macro2",
4377
4379
  "quote",
4378
- "syn 2.0.100",
4380
+ "syn 2.0.101",
4379
4381
  "synstructure",
4380
4382
  ]
4381
4383
 
@@ -4404,7 +4406,7 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6"
4404
4406
  dependencies = [
4405
4407
  "proc-macro2",
4406
4408
  "quote",
4407
- "syn 2.0.100",
4409
+ "syn 2.0.101",
4408
4410
  ]
4409
4411
 
4410
4412
  [[package]]
data/exe/itsi CHANGED
@@ -164,7 +164,12 @@ if ENV['COMP_LINE'] || ARGV.include?('--completion')
164
164
  exit
165
165
  end
166
166
 
167
- parser.parse!
167
+ begin
168
+ parser.parse!
169
+ rescue StandardError => e
170
+ puts e.message
171
+ exit
172
+ end
168
173
 
169
174
  case (command = ARGV.shift)
170
175
  when *COMMANDS.keys
@@ -2,7 +2,7 @@
2
2
  name = "itsi_acme"
3
3
  version = "0.1.0"
4
4
  authors = [
5
- "wouterkem <wc@pico.net.nz>",
5
+ "wouterken <wc@pico.net.nz>",
6
6
  "dignifiedquire <me@dignifiedquire.com>",
7
7
  "Florian Uekermann <florian@uekermann.me>",
8
8
  ]
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "itsi-scheduler"
3
- version = "0.2.15"
3
+ version = "0.2.17"
4
4
  edition = "2021"
5
5
  authors = ["Wouter Coppieters <wc@pico.net.nz>"]
6
6
  license = "MIT"
@@ -111,7 +111,7 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
111
111
 
112
112
  [[package]]
113
113
  name = "atty"
114
- version = "0.2.15"
114
+ version = "0.2.16"
115
115
  source = "registry+https://github.com/rust-lang/crates.io-index"
116
116
  checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
117
117
  dependencies = [
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "itsi-server"
3
- version = "0.2.15"
3
+ version = "0.2.17"
4
4
  edition = "2021"
5
5
  authors = ["Wouter Coppieters <wc@pico.net.nz>"]
6
6
  license = "MIT"
@@ -90,3 +90,5 @@ argon2 = "0.5.3"
90
90
  core_affinity = "0.8.3"
91
91
  memchr = "2.7.4"
92
92
  quick_cache = "0.6.13"
93
+ smallvec = "1.15.0"
94
+ futures-util = "0.3.31"
@@ -3,4 +3,6 @@
3
3
  require "mkmf"
4
4
  require "rb_sys/mkmf"
5
5
 
6
- create_rust_makefile("itsi/server/itsi_server")
6
+ create_rust_makefile("itsi/server/itsi_server") do |r|
7
+ r.extra_rustflags = ["-C target-cpu=native"]
8
+ end
@@ -1,4 +1,5 @@
1
1
  #![deny(unused_crate_dependencies)]
2
+
2
3
  pub mod default_responses;
3
4
  pub mod env;
4
5
  pub mod prelude;
@@ -57,6 +58,7 @@ fn init(ruby: &Ruby) -> Result<()> {
57
58
  request.define_method("rack_protocol", method!(ItsiHttpRequest::rack_protocol, 0))?;
58
59
  request.define_method("host", method!(ItsiHttpRequest::host, 0))?;
59
60
  request.define_method("headers", method!(ItsiHttpRequest::headers, 0))?;
61
+ request.define_method("each_header", method!(ItsiHttpRequest::each_header, 0))?;
60
62
  request.define_method("uri", method!(ItsiHttpRequest::uri, 0))?;
61
63
  request.define_method("header", method!(ItsiHttpRequest::header, 1))?;
62
64
  request.define_method("[]", method!(ItsiHttpRequest::header, 1))?;
@@ -70,6 +72,7 @@ fn init(ruby: &Ruby) -> Result<()> {
70
72
  request.define_method("url_encoded?", method!(ItsiHttpRequest::is_url_encoded, 0))?;
71
73
  request.define_method("multipart?", method!(ItsiHttpRequest::is_multipart, 0))?;
72
74
  request.define_method("url_params", method!(ItsiHttpRequest::url_params, 0))?;
75
+ request.define_method("server_error", method!(ItsiHttpRequest::error, 1))?;
73
76
 
74
77
  let body_proxy = ruby.get_inner(&ITSI_BODY_PROXY);
75
78
  body_proxy.define_method("gets", method!(ItsiBodyProxy::gets, 0))?;
@@ -79,6 +82,10 @@ fn init(ruby: &Ruby) -> Result<()> {
79
82
 
80
83
  let response = ruby.get_inner(&ITSI_RESPONSE);
81
84
  response.define_method("[]=", method!(ItsiHttpResponse::add_header, 2))?;
85
+ response.define_method(
86
+ "reserve_headers",
87
+ method!(ItsiHttpResponse::reserve_headers, 1),
88
+ )?;
82
89
  response.define_method("add_header", method!(ItsiHttpResponse::add_header, 2))?;
83
90
  response.define_method("add_headers", method!(ItsiHttpResponse::add_headers, 1))?;
84
91
  response.define_method("status=", method!(ItsiHttpResponse::set_status, 1))?;
@@ -86,7 +93,6 @@ fn init(ruby: &Ruby) -> Result<()> {
86
93
  response.define_method("<<", method!(ItsiHttpResponse::send_frame, 1))?;
87
94
  response.define_method("write", method!(ItsiHttpResponse::send_frame, 1))?;
88
95
  response.define_method("read", method!(ItsiHttpResponse::recv_frame, 0))?;
89
- response.define_method("flush", method!(ItsiHttpResponse::flush, 0))?;
90
96
  response.define_method("closed?", method!(ItsiHttpResponse::is_closed, 0))?;
91
97
  response.define_method(
92
98
  "send_and_close",
@@ -25,6 +25,7 @@ pub struct ItsiBodyProxy {
25
25
  pub enum ItsiBody {
26
26
  Buffered(BigBytes),
27
27
  Stream(ItsiBodyProxy),
28
+ Empty,
28
29
  }
29
30
 
30
31
  impl ItsiBody {
@@ -32,6 +33,7 @@ impl ItsiBody {
32
33
  match self {
33
34
  ItsiBody::Buffered(bytes) => bytes.as_value(),
34
35
  ItsiBody::Stream(proxy) => Some(proxy.clone().into_value()),
36
+ ItsiBody::Empty => None,
35
37
  }
36
38
  }
37
39
  }