itsi-server 0.2.24-x86_64-darwin → 0.2.26-x86_64-darwin

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9e161e8aeee35c667510c8c75b4efbd53cbd90e0404b43659fc81c093e877dba
4
- data.tar.gz: 0dabf0092e732c0fcbe68377dca00782f619c31bba90b1f34f5294b54285b19c
3
+ metadata.gz: c2c32d23cc16ed814dbbb56704b3ee235455b888a73a73ddc78a170da5f9c53d
4
+ data.tar.gz: 0b0824fd04343d553eb9a3a8b8d767377108d0829a262dced979b6a9984b342e
5
5
  SHA512:
6
- metadata.gz: 70fa9ed688aa44c90c2a104fefed967ad4d7785a37aed919fbf3df086b51dfa1b18a0dcf7c788d81f6858a5c599c1238b34891eb0250ea55238678229dffcef3
7
- data.tar.gz: 6aeeebf45f2a349a1d367461eb7ddf774a8546b3c77c340a742e18bda40fb70d4a7d1048b98d129c22be5bbd9c9aeb92a4fe2880c918b16cbcbca27d042b8647
6
+ metadata.gz: fc83dee1a5e0d1a2a51b04ddd5d5b6ddd2cf3ac90f50c7fdc7058bc40a8ab47553d43138ebeddf586882f9d6af4d465cc1eb5dc31e30fbf73dd6e60b28904255
7
+ data.tar.gz: 0da320ba0bb539a02c682129728f04db2642ffb3ae4a2541d25180f72431b4d487533e4c05bd7270051708f849e976c0047cf84777cadf23d47f127b8d18a840
data/Cargo.lock CHANGED
@@ -1662,7 +1662,7 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
1662
1662
 
1663
1663
  [[package]]
1664
1664
  name = "itsi-server"
1665
- version = "0.2.24"
1665
+ version = "0.2.26"
1666
1666
  dependencies = [
1667
1667
  "argon2",
1668
1668
  "async-channel",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "itsi-scheduler"
3
- version = "0.2.24"
3
+ version = "0.2.26"
4
4
  edition = "2021"
5
5
  authors = ["Wouter Coppieters <wc@pico.net.nz>"]
6
6
  license = "MIT"
@@ -984,7 +984,7 @@ checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674"
984
984
 
985
985
  [[package]]
986
986
  name = "itsi-scheduler"
987
- version = "0.2.24"
987
+ version = "0.1.0"
988
988
  dependencies = [
989
989
  "bytes",
990
990
  "derive_more",
@@ -1002,7 +1002,7 @@ dependencies = [
1002
1002
 
1003
1003
  [[package]]
1004
1004
  name = "itsi-server"
1005
- version = "0.2.24"
1005
+ version = "0.1.0"
1006
1006
  dependencies = [
1007
1007
  "async-channel",
1008
1008
  "async-trait",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "itsi-server"
3
- version = "0.2.24"
3
+ version = "0.2.26"
4
4
  edition = "2021"
5
5
  authors = ["Wouter Coppieters <wc@pico.net.nz>"]
6
6
  license = "MIT"
@@ -263,7 +263,7 @@ impl MiddlewareSet {
263
263
  pub fn stack_for(
264
264
  &self,
265
265
  request: &HttpRequest,
266
- ) -> Option<(&Vec<Middleware>, Option<Arc<Regex>>)> {
266
+ ) -> Result<(&Vec<Middleware>, Option<Arc<Regex>>)> {
267
267
  let binding = self.route_set.matches(request.uri().path());
268
268
  let matches = binding.iter();
269
269
 
@@ -276,7 +276,7 @@ impl MiddlewareSet {
276
276
  let matching_pattern = self.patterns.get(index).cloned();
277
277
  if let Some(stack) = self.stacks.get(&index) {
278
278
  if stack.matches(request) {
279
- return Some((&stack.layers, matching_pattern));
279
+ return Ok((&stack.layers, matching_pattern));
280
280
  }
281
281
  }
282
282
  }
@@ -285,7 +285,13 @@ impl MiddlewareSet {
285
285
  request.uri().path(),
286
286
  self.route_set
287
287
  );
288
- None
288
+ Err(magnus::Error::new(
289
+ magnus::Ruby::get().unwrap().exception_standard_error(),
290
+ format!(
291
+ "No matching middleware stack found for request: {:?}",
292
+ request
293
+ ),
294
+ ))
289
295
  }
290
296
 
291
297
  pub fn parse_middleware(middleware_type: String, parameters: Value) -> Result<Middleware> {
@@ -188,11 +188,14 @@ impl ItsiHttpService {
188
188
  let token_preference = self.server_params.itsi_server_token_preference;
189
189
 
190
190
  let service_future = async move {
191
- let Some((stack, matching_pattern)) =
192
- self.server_params.middleware.get().unwrap().stack_for(&req)
193
- else {
194
- return Ok(NOT_FOUND_RESPONSE.to_http_response(accept).await);
195
- };
191
+ let middleware_stack = self
192
+ .server_params
193
+ .middleware
194
+ .get()
195
+ .unwrap()
196
+ .stack_for(&req)
197
+ .unwrap();
198
+ let (stack, matching_pattern) = middleware_stack;
196
199
  let mut resp: Option<HttpResponse> = None;
197
200
 
198
201
  let mut context =
@@ -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
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Itsi
4
4
  class Server
5
- VERSION = "0.2.24"
5
+ VERSION = "0.2.26"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: itsi-server
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.24
4
+ version: 0.2.26
5
5
  platform: x86_64-darwin
6
6
  authors:
7
7
  - Wouter Coppieters
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-04-18 00:00:00.000000000 Z
11
+ date: 2026-05-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json