unicorn 5.8.0 → 6.1.0

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.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unicorn
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.8.0
4
+ version: 6.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - unicorn hackers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-12-24 00:00:00.000000000 Z
11
+ date: 2021-12-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack
@@ -157,6 +157,7 @@ files:
157
157
  - ext/unicorn_http/CFLAGS
158
158
  - ext/unicorn_http/c_util.h
159
159
  - ext/unicorn_http/common_field_optimization.h
160
+ - ext/unicorn_http/epollexclusive.h
160
161
  - ext/unicorn_http/ext_help.h
161
162
  - ext/unicorn_http/extconf.rb
162
163
  - ext/unicorn_http/global_variables.h
@@ -176,6 +177,7 @@ files:
176
177
  - lib/unicorn/launcher.rb
177
178
  - lib/unicorn/oob_gc.rb
178
179
  - lib/unicorn/preread_input.rb
180
+ - lib/unicorn/select_waiter.rb
179
181
  - lib/unicorn/socket_helper.rb
180
182
  - lib/unicorn/stream_input.rb
181
183
  - lib/unicorn/tee_input.rb
@@ -197,7 +199,6 @@ files:
197
199
  - t/env.ru
198
200
  - t/fails-rack-lint.ru
199
201
  - t/heartbeat-timeout.ru
200
- - t/hijack.ru
201
202
  - t/listener_names.ru
202
203
  - t/my-tap-lib.sh
203
204
  - t/oob_gc.ru
@@ -235,7 +236,6 @@ files:
235
236
  - t/t0100-rack-input-tests.sh
236
237
  - t/t0116-client_body_buffer_size.sh
237
238
  - t/t0116.ru
238
- - t/t0200-rack-hijack.sh
239
239
  - t/t0300-no-default-middleware.sh
240
240
  - t/t0301-no-default-middleware-ignored-in-config.sh
241
241
  - t/t0301.ru
@@ -268,6 +268,7 @@ files:
268
268
  - test/unit/test_tee_input.rb
269
269
  - test/unit/test_upload.rb
270
270
  - test/unit/test_util.rb
271
+ - test/unit/test_waiter.rb
271
272
  - unicorn.gemspec
272
273
  - unicorn_1
273
274
  - unicorn_rails_1
@@ -284,7 +285,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
284
285
  requirements:
285
286
  - - ">="
286
287
  - !ruby/object:Gem::Version
287
- version: 1.9.3
288
+ version: 2.0.0
288
289
  required_rubygems_version: !ruby/object:Gem::Requirement
289
290
  requirements:
290
291
  - - ">="
@@ -303,3 +304,4 @@ test_files:
303
304
  - test/unit/test_server.rb
304
305
  - test/unit/test_upload.rb
305
306
  - test/unit/test_util.rb
307
+ - test/unit/test_waiter.rb
data/t/hijack.ru DELETED
@@ -1,55 +0,0 @@
1
- use Rack::Lint
2
- use Rack::ContentLength
3
- use Rack::ContentType, "text/plain"
4
- class DieIfUsed
5
- @@n = 0
6
- def each
7
- abort "body.each called after response hijack\n"
8
- end
9
-
10
- def close
11
- warn "closed DieIfUsed #{@@n += 1}\n"
12
- end
13
- end
14
-
15
- envs = []
16
-
17
- run lambda { |env|
18
- case env["PATH_INFO"]
19
- when "/hijack_req"
20
- if env["rack.hijack?"]
21
- io = env["rack.hijack"].call
22
- envs << env
23
- if io.respond_to?(:read_nonblock) &&
24
- env["rack.hijack_io"].respond_to?(:read_nonblock)
25
-
26
- # exercise both, since we Rack::Lint may use different objects
27
- env["rack.hijack_io"].write("HTTP/1.0 200 OK\r\n\r\n")
28
- io.write("request.hijacked")
29
- io.close
30
- return [ 500, {}, DieIfUsed.new ]
31
- end
32
- end
33
- [ 500, {}, [ "hijack BAD\n" ] ]
34
- when "/hijack_res"
35
- r = "response.hijacked"
36
- [ 200,
37
- {
38
- "Content-Length" => r.bytesize.to_s,
39
- "rack.hijack" => proc do |io|
40
- envs << env
41
- io.write(r)
42
- io.close
43
- end
44
- },
45
- DieIfUsed.new
46
- ]
47
- when "/normal_env_id"
48
- b = "#{env.object_id}\n"
49
- h = {
50
- 'Content-Type' => 'text/plain',
51
- 'Content-Length' => b.bytesize.to_s,
52
- }
53
- [ 200, h, [ b ] ]
54
- end
55
- }
@@ -1,51 +0,0 @@
1
- #!/bin/sh
2
- . ./test-lib.sh
3
- t_plan 9 "rack.hijack tests (Rack 1.5+ (Rack::VERSION >= [ 1,2]))"
4
-
5
- t_begin "setup and start" && {
6
- unicorn_setup
7
- unicorn -D -c $unicorn_config hijack.ru
8
- unicorn_wait_start
9
- }
10
-
11
- t_begin "normal env reused between requests" && {
12
- env_a="$(curl -sSf http://$listen/normal_env_id)"
13
- b="$(curl -sSf http://$listen/normal_env_id)"
14
- test x"$env_a" = x"$b"
15
- }
16
-
17
- t_begin "check request hijack" && {
18
- test "xrequest.hijacked" = x"$(curl -sSfv http://$listen/hijack_req)"
19
- }
20
-
21
- t_begin "env changed after request hijack" && {
22
- env_b="$(curl -sSf http://$listen/normal_env_id)"
23
- test x"$env_a" != x"$env_b"
24
- }
25
-
26
- t_begin "check response hijack" && {
27
- test "xresponse.hijacked" = x"$(curl -sSfv http://$listen/hijack_res)"
28
- }
29
-
30
- t_begin "env changed after response hijack" && {
31
- env_c="$(curl -sSf http://$listen/normal_env_id)"
32
- test x"$env_b" != x"$env_c"
33
- }
34
-
35
- t_begin "env continues to be reused between requests" && {
36
- b="$(curl -sSf http://$listen/normal_env_id)"
37
- test x"$env_c" = x"$b"
38
- }
39
-
40
- t_begin "killing succeeds after hijack" && {
41
- kill $unicorn_pid
42
- }
43
-
44
- t_begin "check stderr for hijacked body close" && {
45
- check_stderr
46
- grep 'closed DieIfUsed 1\>' $r_err
47
- grep 'closed DieIfUsed 2\>' $r_err
48
- ! grep 'closed DieIfUsed 3\>' $r_err
49
- }
50
-
51
- t_done