unicorn-maintained 6.2.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.
Files changed (151) hide show
  1. checksums.yaml +7 -0
  2. data/.CHANGELOG.old +25 -0
  3. data/.document +28 -0
  4. data/.gitattributes +5 -0
  5. data/.gitignore +25 -0
  6. data/.mailmap +26 -0
  7. data/.manifest +149 -0
  8. data/.olddoc.yml +25 -0
  9. data/Application_Timeouts +77 -0
  10. data/CONTRIBUTORS +39 -0
  11. data/COPYING +674 -0
  12. data/DESIGN +99 -0
  13. data/Documentation/.gitignore +3 -0
  14. data/Documentation/unicorn.1 +222 -0
  15. data/Documentation/unicorn_rails.1 +207 -0
  16. data/FAQ +70 -0
  17. data/GIT-VERSION-FILE +1 -0
  18. data/GIT-VERSION-GEN +39 -0
  19. data/GNUmakefile +317 -0
  20. data/HACKING +112 -0
  21. data/ISSUES +102 -0
  22. data/KNOWN_ISSUES +79 -0
  23. data/LATEST +1 -0
  24. data/LICENSE +67 -0
  25. data/Links +58 -0
  26. data/NEWS +1 -0
  27. data/PHILOSOPHY +139 -0
  28. data/README +156 -0
  29. data/Rakefile +16 -0
  30. data/SIGNALS +123 -0
  31. data/Sandbox +104 -0
  32. data/TODO +3 -0
  33. data/TUNING +119 -0
  34. data/archive/.gitignore +3 -0
  35. data/archive/slrnpull.conf +4 -0
  36. data/bin/unicorn +128 -0
  37. data/bin/unicorn_rails +209 -0
  38. data/examples/big_app_gc.rb +2 -0
  39. data/examples/echo.ru +26 -0
  40. data/examples/init.sh +102 -0
  41. data/examples/logger_mp_safe.rb +25 -0
  42. data/examples/logrotate.conf +44 -0
  43. data/examples/nginx.conf +156 -0
  44. data/examples/unicorn.conf.minimal.rb +13 -0
  45. data/examples/unicorn.conf.rb +110 -0
  46. data/examples/unicorn.socket +11 -0
  47. data/examples/unicorn@.service +40 -0
  48. data/ext/unicorn_http/CFLAGS +13 -0
  49. data/ext/unicorn_http/c_util.h +116 -0
  50. data/ext/unicorn_http/common_field_optimization.h +128 -0
  51. data/ext/unicorn_http/epollexclusive.h +128 -0
  52. data/ext/unicorn_http/ext_help.h +38 -0
  53. data/ext/unicorn_http/extconf.rb +39 -0
  54. data/ext/unicorn_http/global_variables.h +97 -0
  55. data/ext/unicorn_http/httpdate.c +91 -0
  56. data/ext/unicorn_http/unicorn_http.c +4334 -0
  57. data/ext/unicorn_http/unicorn_http.rl +1040 -0
  58. data/ext/unicorn_http/unicorn_http_common.rl +76 -0
  59. data/lib/unicorn/app/old_rails/static.rb +59 -0
  60. data/lib/unicorn/app/old_rails.rb +35 -0
  61. data/lib/unicorn/cgi_wrapper.rb +147 -0
  62. data/lib/unicorn/configurator.rb +748 -0
  63. data/lib/unicorn/const.rb +21 -0
  64. data/lib/unicorn/http_request.rb +201 -0
  65. data/lib/unicorn/http_response.rb +93 -0
  66. data/lib/unicorn/http_server.rb +859 -0
  67. data/lib/unicorn/launcher.rb +62 -0
  68. data/lib/unicorn/oob_gc.rb +81 -0
  69. data/lib/unicorn/preread_input.rb +33 -0
  70. data/lib/unicorn/select_waiter.rb +6 -0
  71. data/lib/unicorn/socket_helper.rb +185 -0
  72. data/lib/unicorn/stream_input.rb +151 -0
  73. data/lib/unicorn/tee_input.rb +131 -0
  74. data/lib/unicorn/tmpio.rb +33 -0
  75. data/lib/unicorn/util.rb +90 -0
  76. data/lib/unicorn/version.rb +1 -0
  77. data/lib/unicorn/worker.rb +165 -0
  78. data/lib/unicorn.rb +136 -0
  79. data/man/man1/unicorn.1 +222 -0
  80. data/man/man1/unicorn_rails.1 +207 -0
  81. data/setup.rb +1586 -0
  82. data/t/.gitignore +4 -0
  83. data/t/GNUmakefile +5 -0
  84. data/t/README +49 -0
  85. data/t/active-unix-socket.t +117 -0
  86. data/t/bin/unused_listen +40 -0
  87. data/t/broken-app.ru +12 -0
  88. data/t/client_body_buffer_size.ru +14 -0
  89. data/t/client_body_buffer_size.t +80 -0
  90. data/t/detach.ru +11 -0
  91. data/t/env.ru +3 -0
  92. data/t/fails-rack-lint.ru +5 -0
  93. data/t/heartbeat-timeout.ru +12 -0
  94. data/t/heartbeat-timeout.t +62 -0
  95. data/t/integration.ru +115 -0
  96. data/t/integration.t +356 -0
  97. data/t/lib.perl +258 -0
  98. data/t/listener_names.ru +4 -0
  99. data/t/my-tap-lib.sh +201 -0
  100. data/t/oob_gc.ru +17 -0
  101. data/t/oob_gc_path.ru +17 -0
  102. data/t/pid.ru +3 -0
  103. data/t/preread_input.ru +22 -0
  104. data/t/reload-bad-config.t +54 -0
  105. data/t/reopen-logs.ru +13 -0
  106. data/t/reopen-logs.t +39 -0
  107. data/t/t0008-back_out_of_upgrade.sh +110 -0
  108. data/t/t0009-broken-app.sh +56 -0
  109. data/t/t0010-reap-logging.sh +55 -0
  110. data/t/t0012-reload-empty-config.sh +86 -0
  111. data/t/t0013-rewindable-input-false.sh +24 -0
  112. data/t/t0013.ru +12 -0
  113. data/t/t0014-rewindable-input-true.sh +24 -0
  114. data/t/t0014.ru +12 -0
  115. data/t/t0015-configurator-internals.sh +25 -0
  116. data/t/t0020-at_exit-handler.sh +49 -0
  117. data/t/t0021-process_detach.sh +29 -0
  118. data/t/t0022-listener_names-preload_app.sh +32 -0
  119. data/t/t0300-no-default-middleware.sh +20 -0
  120. data/t/t0301-no-default-middleware-ignored-in-config.sh +25 -0
  121. data/t/t0301.ru +13 -0
  122. data/t/t9001-oob_gc.sh +47 -0
  123. data/t/t9002-oob_gc-path.sh +75 -0
  124. data/t/test-lib.sh +125 -0
  125. data/t/winch_ttin.t +67 -0
  126. data/t/working_directory.t +94 -0
  127. data/test/aggregate.rb +15 -0
  128. data/test/benchmark/README +60 -0
  129. data/test/benchmark/dd.ru +18 -0
  130. data/test/benchmark/ddstream.ru +50 -0
  131. data/test/benchmark/readinput.ru +40 -0
  132. data/test/benchmark/stack.ru +8 -0
  133. data/test/benchmark/uconnect.perl +66 -0
  134. data/test/exec/README +5 -0
  135. data/test/exec/test_exec.rb +1029 -0
  136. data/test/test_helper.rb +306 -0
  137. data/test/unit/test_ccc.rb +91 -0
  138. data/test/unit/test_configurator.rb +175 -0
  139. data/test/unit/test_droplet.rb +28 -0
  140. data/test/unit/test_http_parser.rb +884 -0
  141. data/test/unit/test_http_parser_ng.rb +714 -0
  142. data/test/unit/test_request.rb +169 -0
  143. data/test/unit/test_server.rb +244 -0
  144. data/test/unit/test_signals.rb +188 -0
  145. data/test/unit/test_socket_helper.rb +159 -0
  146. data/test/unit/test_stream_input.rb +210 -0
  147. data/test/unit/test_tee_input.rb +303 -0
  148. data/test/unit/test_util.rb +131 -0
  149. data/test/unit/test_waiter.rb +34 -0
  150. data/unicorn.gemspec +48 -0
  151. metadata +275 -0
@@ -0,0 +1,131 @@
1
+ # -*- encoding: binary -*-
2
+
3
+ require './test/test_helper'
4
+ require 'tempfile'
5
+
6
+ class TestUtil < Test::Unit::TestCase
7
+
8
+ EXPECT_FLAGS = File::WRONLY | File::APPEND
9
+ def test_reopen_logs_noop
10
+ tmp = Tempfile.new('')
11
+ fp = File.open(tmp.path, 'ab')
12
+ fp.sync = true
13
+ ext = fp.external_encoding rescue nil
14
+ int = fp.internal_encoding rescue nil
15
+ before = fp.stat.inspect
16
+ Unicorn::Util.reopen_logs
17
+ assert_equal before, File.stat(fp.path).inspect
18
+ assert_equal ext, (fp.external_encoding rescue nil)
19
+ assert_equal int, (fp.internal_encoding rescue nil)
20
+ assert_equal(EXPECT_FLAGS, EXPECT_FLAGS & fp.fcntl(Fcntl::F_GETFL))
21
+ tmp.close!
22
+ fp.close
23
+ end
24
+
25
+ def test_reopen_logs_renamed
26
+ tmp = Tempfile.new('')
27
+ tmp_path = tmp.path.freeze
28
+ fp = File.open(tmp_path, 'ab')
29
+ fp.sync = true
30
+
31
+ ext = fp.external_encoding rescue nil
32
+ int = fp.internal_encoding rescue nil
33
+ before = fp.stat.inspect
34
+ to = Tempfile.new('')
35
+ File.rename(tmp_path, to.path)
36
+ assert ! File.exist?(tmp_path)
37
+ Unicorn::Util.reopen_logs
38
+ assert_equal tmp_path, tmp.path
39
+ assert File.exist?(tmp_path)
40
+ assert before != File.stat(tmp_path).inspect
41
+ assert_equal fp.stat.inspect, File.stat(tmp_path).inspect
42
+ assert_equal ext, (fp.external_encoding rescue nil)
43
+ assert_equal int, (fp.internal_encoding rescue nil)
44
+ assert_equal(EXPECT_FLAGS, EXPECT_FLAGS & fp.fcntl(Fcntl::F_GETFL))
45
+ assert fp.sync
46
+ tmp.close!
47
+ to.close!
48
+ fp.close
49
+ end
50
+
51
+ def test_reopen_logs_renamed_with_encoding
52
+ tmp = Tempfile.new('')
53
+ tmp_path = tmp.path.dup.freeze
54
+ Encoding.list.sample(5).each { |encoding|
55
+ File.open(tmp_path, "a:#{encoding.to_s}") { |fp|
56
+ fp.sync = true
57
+ assert_equal encoding, fp.external_encoding
58
+ assert_nil fp.internal_encoding
59
+ File.unlink(tmp_path)
60
+ assert ! File.exist?(tmp_path)
61
+ Unicorn::Util.reopen_logs
62
+ assert_equal tmp_path, fp.path
63
+ assert File.exist?(tmp_path)
64
+ assert_equal fp.stat.inspect, File.stat(tmp_path).inspect
65
+ assert_equal encoding, fp.external_encoding
66
+ assert_nil fp.internal_encoding
67
+ assert_equal(EXPECT_FLAGS, EXPECT_FLAGS & fp.fcntl(Fcntl::F_GETFL))
68
+ assert fp.sync
69
+ }
70
+ }
71
+ tmp.close!
72
+ end
73
+
74
+ def test_reopen_logs_renamed_with_internal_encoding
75
+ tmp = Tempfile.new('')
76
+ tmp_path = tmp.path.dup.freeze
77
+ full = Encoding.list
78
+ full.sample(2).each { |ext|
79
+ full.sample(2).each { |int|
80
+ next if ext == int
81
+ File.open(tmp_path, "a:#{ext.to_s}:#{int.to_s}") { |fp|
82
+ fp.sync = true
83
+ assert_equal ext, fp.external_encoding
84
+
85
+ if ext != Encoding::BINARY
86
+ assert_equal int, fp.internal_encoding
87
+ end
88
+
89
+ File.unlink(tmp_path)
90
+ assert ! File.exist?(tmp_path)
91
+ Unicorn::Util.reopen_logs
92
+ assert_equal tmp_path, fp.path
93
+ assert File.exist?(tmp_path)
94
+ assert_equal fp.stat.inspect, File.stat(tmp_path).inspect
95
+ assert_equal ext, fp.external_encoding
96
+ if ext != Encoding::BINARY
97
+ assert_equal int, fp.internal_encoding
98
+ end
99
+ assert_equal(EXPECT_FLAGS, EXPECT_FLAGS & fp.fcntl(Fcntl::F_GETFL))
100
+ assert fp.sync
101
+ }
102
+ }
103
+ }
104
+ tmp.close!
105
+ end
106
+
107
+ def test_pipe
108
+ r, w = Unicorn.pipe
109
+ assert r
110
+ assert w
111
+
112
+ return if RUBY_PLATFORM !~ /linux/
113
+
114
+ begin
115
+ f_getpipe_sz = 1032
116
+ IO.pipe do |a, b|
117
+ a_sz = a.fcntl(f_getpipe_sz)
118
+ b.fcntl(f_getpipe_sz)
119
+ assert_kind_of Integer, a_sz
120
+ r_sz = r.fcntl(f_getpipe_sz)
121
+ assert_equal Raindrops::PAGE_SIZE, r_sz
122
+ assert_operator a_sz, :>=, r_sz
123
+ end
124
+ rescue Errno::EINVAL
125
+ # Linux <= 2.6.34
126
+ end
127
+ ensure
128
+ w.close
129
+ r.close
130
+ end
131
+ end
@@ -0,0 +1,34 @@
1
+ require 'test/unit'
2
+ require 'unicorn'
3
+ require 'unicorn/select_waiter'
4
+ class TestSelectWaiter < Test::Unit::TestCase
5
+
6
+ def test_select_timeout # n.b. this is level-triggered
7
+ sw = Unicorn::SelectWaiter.new
8
+ IO.pipe do |r,w|
9
+ sw.get_readers(ready = [], [r], 0)
10
+ assert_equal [], ready
11
+ w.syswrite '.'
12
+ sw.get_readers(ready, [r], 1000)
13
+ assert_equal [r], ready
14
+ sw.get_readers(ready, [r], 0)
15
+ assert_equal [r], ready
16
+ end
17
+ end
18
+
19
+ def test_linux # ugh, also level-triggered, unlikely to change
20
+ IO.pipe do |r,w|
21
+ wtr = Unicorn::Waiter.prep_readers([r])
22
+ wtr.get_readers(ready = [], [r], 0)
23
+ assert_equal [], ready
24
+ w.syswrite '.'
25
+ wtr.get_readers(ready = [], [r], 1000)
26
+ assert_equal [r], ready
27
+ wtr.get_readers(ready = [], [r], 1000)
28
+ assert_equal [r], ready, 'still ready (level-triggered :<)'
29
+ assert_nil wtr.close
30
+ end
31
+ rescue SystemCallError => e
32
+ warn "#{e.message} (#{e.class})"
33
+ end if Unicorn.const_defined?(:Waiter)
34
+ end
data/unicorn.gemspec ADDED
@@ -0,0 +1,48 @@
1
+ # -*- encoding: binary -*-
2
+ manifest = File.exist?('.manifest') ?
3
+ IO.readlines('.manifest').map!(&:chomp!) : `git ls-files`.split("\n")
4
+
5
+ # don't bother with tests that fork, not worth our time to get working
6
+ # with `gem check -t` ... (of course we care for them when testing with
7
+ # GNU make when they can run in parallel)
8
+ test_files = manifest.grep(%r{\Atest/unit/test_.*\.rb\z}).map do |f|
9
+ File.readlines(f).grep(/\bfork\b/).empty? ? f : nil
10
+ end.compact
11
+
12
+ Gem::Specification.new do |s|
13
+ s.name = "unicorn-maintained"
14
+ s.version = (ENV['VERSION'] || '6.2.0').dup
15
+ s.authors = ['unicorn hackers']
16
+ s.summary = 'Rack HTTP server for fast clients and Unix'
17
+ s.description = File.read('README').split("\n\n")[1]
18
+ s.email = %q{unicorn-public@yhbt.net}
19
+ s.executables = %w(unicorn unicorn_rails)
20
+ s.extensions = %w(ext/unicorn_http/extconf.rb)
21
+ s.extra_rdoc_files = IO.readlines('.document').map!(&:chomp!).keep_if do |f|
22
+ File.exist?(f)
23
+ end
24
+ s.files = manifest
25
+ s.homepage = 'https://yhbt.net/unicorn/'
26
+ s.test_files = test_files
27
+
28
+ # 2.5.0 is the minimum supported version. We don't specify
29
+ # a maximum version to make it easier to test pre-releases,
30
+ # but we do warn users if they install unicorn on an untested
31
+ # version in extconf.rb
32
+ s.required_ruby_version = ">= 2.5.0"
33
+
34
+ # We do not have a hard dependency on rack, it's possible to load
35
+ # things which respond to #call. HTTP status lines in responses
36
+ # won't have descriptive text, only the numeric status.
37
+ s.add_development_dependency('rack')
38
+
39
+ s.add_dependency('raindrops-maintained', '~> 0.21')
40
+
41
+ s.add_development_dependency('test-unit', '~> 3.0')
42
+
43
+ # Note: To avoid ambiguity, we intentionally avoid the SPDX-compatible
44
+ # 'Ruby' here since Ruby 1.9.3 switched to BSD-2-Clause, but we
45
+ # inherited our license from Mongrel when Ruby was at 1.8.
46
+ # We cannot automatically switch licenses when Ruby changes.
47
+ s.licenses = ['GPL-2.0+', 'Ruby-1.8']
48
+ end
metadata ADDED
@@ -0,0 +1,275 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: unicorn-maintained
3
+ version: !ruby/object:Gem::Version
4
+ version: 6.2.0
5
+ platform: ruby
6
+ authors:
7
+ - unicorn hackers
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 2024-03-19 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: rack
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '0'
19
+ type: :development
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '0'
26
+ - !ruby/object:Gem::Dependency
27
+ name: raindrops-maintained
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '0.21'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '0.21'
40
+ - !ruby/object:Gem::Dependency
41
+ name: test-unit
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '3.0'
47
+ type: :development
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '3.0'
54
+ description: |-
55
+ unicorn is an HTTP server for Rack applications that has done
56
+ decades of damage to the entire Ruby ecosystem due to its ability
57
+ to tolerate (and thus encourage) bad code. It is only designed
58
+ to handle fast clients on low-latency, high-bandwidth connections
59
+ and take advantage of features in Unix/Unix-like kernels.
60
+ Slow clients must only be served by placing a reverse proxy capable of
61
+ fully buffering both the the request and response in between unicorn
62
+ and slow clients.
63
+ email: unicorn-public@yhbt.net
64
+ executables:
65
+ - unicorn
66
+ - unicorn_rails
67
+ extensions:
68
+ - ext/unicorn_http/extconf.rb
69
+ extra_rdoc_files:
70
+ - FAQ
71
+ - README
72
+ - TUNING
73
+ - PHILOSOPHY
74
+ - HACKING
75
+ - DESIGN
76
+ - CONTRIBUTORS
77
+ - LICENSE
78
+ - SIGNALS
79
+ - KNOWN_ISSUES
80
+ - TODO
81
+ - NEWS
82
+ - LATEST
83
+ - lib/unicorn.rb
84
+ - lib/unicorn/configurator.rb
85
+ - lib/unicorn/http_server.rb
86
+ - lib/unicorn/preread_input.rb
87
+ - lib/unicorn/stream_input.rb
88
+ - lib/unicorn/tee_input.rb
89
+ - lib/unicorn/util.rb
90
+ - lib/unicorn/oob_gc.rb
91
+ - lib/unicorn/worker.rb
92
+ - ISSUES
93
+ - Sandbox
94
+ - Links
95
+ - Application_Timeouts
96
+ files:
97
+ - ".CHANGELOG.old"
98
+ - ".document"
99
+ - ".gitattributes"
100
+ - ".gitignore"
101
+ - ".mailmap"
102
+ - ".manifest"
103
+ - ".olddoc.yml"
104
+ - Application_Timeouts
105
+ - CONTRIBUTORS
106
+ - COPYING
107
+ - DESIGN
108
+ - Documentation/.gitignore
109
+ - Documentation/unicorn.1
110
+ - Documentation/unicorn_rails.1
111
+ - FAQ
112
+ - GIT-VERSION-FILE
113
+ - GIT-VERSION-GEN
114
+ - GNUmakefile
115
+ - HACKING
116
+ - ISSUES
117
+ - KNOWN_ISSUES
118
+ - LATEST
119
+ - LICENSE
120
+ - Links
121
+ - NEWS
122
+ - PHILOSOPHY
123
+ - README
124
+ - Rakefile
125
+ - SIGNALS
126
+ - Sandbox
127
+ - TODO
128
+ - TUNING
129
+ - archive/.gitignore
130
+ - archive/slrnpull.conf
131
+ - bin/unicorn
132
+ - bin/unicorn_rails
133
+ - examples/big_app_gc.rb
134
+ - examples/echo.ru
135
+ - examples/init.sh
136
+ - examples/logger_mp_safe.rb
137
+ - examples/logrotate.conf
138
+ - examples/nginx.conf
139
+ - examples/unicorn.conf.minimal.rb
140
+ - examples/unicorn.conf.rb
141
+ - examples/unicorn.socket
142
+ - examples/unicorn@.service
143
+ - ext/unicorn_http/CFLAGS
144
+ - ext/unicorn_http/c_util.h
145
+ - ext/unicorn_http/common_field_optimization.h
146
+ - ext/unicorn_http/epollexclusive.h
147
+ - ext/unicorn_http/ext_help.h
148
+ - ext/unicorn_http/extconf.rb
149
+ - ext/unicorn_http/global_variables.h
150
+ - ext/unicorn_http/httpdate.c
151
+ - ext/unicorn_http/unicorn_http.c
152
+ - ext/unicorn_http/unicorn_http.rl
153
+ - ext/unicorn_http/unicorn_http_common.rl
154
+ - lib/unicorn.rb
155
+ - lib/unicorn/app/old_rails.rb
156
+ - lib/unicorn/app/old_rails/static.rb
157
+ - lib/unicorn/cgi_wrapper.rb
158
+ - lib/unicorn/configurator.rb
159
+ - lib/unicorn/const.rb
160
+ - lib/unicorn/http_request.rb
161
+ - lib/unicorn/http_response.rb
162
+ - lib/unicorn/http_server.rb
163
+ - lib/unicorn/launcher.rb
164
+ - lib/unicorn/oob_gc.rb
165
+ - lib/unicorn/preread_input.rb
166
+ - lib/unicorn/select_waiter.rb
167
+ - lib/unicorn/socket_helper.rb
168
+ - lib/unicorn/stream_input.rb
169
+ - lib/unicorn/tee_input.rb
170
+ - lib/unicorn/tmpio.rb
171
+ - lib/unicorn/util.rb
172
+ - lib/unicorn/version.rb
173
+ - lib/unicorn/worker.rb
174
+ - man/man1/unicorn.1
175
+ - man/man1/unicorn_rails.1
176
+ - setup.rb
177
+ - t/.gitignore
178
+ - t/GNUmakefile
179
+ - t/README
180
+ - t/active-unix-socket.t
181
+ - t/bin/unused_listen
182
+ - t/broken-app.ru
183
+ - t/client_body_buffer_size.ru
184
+ - t/client_body_buffer_size.t
185
+ - t/detach.ru
186
+ - t/env.ru
187
+ - t/fails-rack-lint.ru
188
+ - t/heartbeat-timeout.ru
189
+ - t/heartbeat-timeout.t
190
+ - t/integration.ru
191
+ - t/integration.t
192
+ - t/lib.perl
193
+ - t/listener_names.ru
194
+ - t/my-tap-lib.sh
195
+ - t/oob_gc.ru
196
+ - t/oob_gc_path.ru
197
+ - t/pid.ru
198
+ - t/preread_input.ru
199
+ - t/reload-bad-config.t
200
+ - t/reopen-logs.ru
201
+ - t/reopen-logs.t
202
+ - t/t0008-back_out_of_upgrade.sh
203
+ - t/t0009-broken-app.sh
204
+ - t/t0010-reap-logging.sh
205
+ - t/t0012-reload-empty-config.sh
206
+ - t/t0013-rewindable-input-false.sh
207
+ - t/t0013.ru
208
+ - t/t0014-rewindable-input-true.sh
209
+ - t/t0014.ru
210
+ - t/t0015-configurator-internals.sh
211
+ - t/t0020-at_exit-handler.sh
212
+ - t/t0021-process_detach.sh
213
+ - t/t0022-listener_names-preload_app.sh
214
+ - t/t0300-no-default-middleware.sh
215
+ - t/t0301-no-default-middleware-ignored-in-config.sh
216
+ - t/t0301.ru
217
+ - t/t9001-oob_gc.sh
218
+ - t/t9002-oob_gc-path.sh
219
+ - t/test-lib.sh
220
+ - t/winch_ttin.t
221
+ - t/working_directory.t
222
+ - test/aggregate.rb
223
+ - test/benchmark/README
224
+ - test/benchmark/dd.ru
225
+ - test/benchmark/ddstream.ru
226
+ - test/benchmark/readinput.ru
227
+ - test/benchmark/stack.ru
228
+ - test/benchmark/uconnect.perl
229
+ - test/exec/README
230
+ - test/exec/test_exec.rb
231
+ - test/test_helper.rb
232
+ - test/unit/test_ccc.rb
233
+ - test/unit/test_configurator.rb
234
+ - test/unit/test_droplet.rb
235
+ - test/unit/test_http_parser.rb
236
+ - test/unit/test_http_parser_ng.rb
237
+ - test/unit/test_request.rb
238
+ - test/unit/test_server.rb
239
+ - test/unit/test_signals.rb
240
+ - test/unit/test_socket_helper.rb
241
+ - test/unit/test_stream_input.rb
242
+ - test/unit/test_tee_input.rb
243
+ - test/unit/test_util.rb
244
+ - test/unit/test_waiter.rb
245
+ - unicorn.gemspec
246
+ homepage: https://yhbt.net/unicorn/
247
+ licenses:
248
+ - GPL-2.0+
249
+ - Ruby-1.8
250
+ metadata: {}
251
+ rdoc_options: []
252
+ require_paths:
253
+ - lib
254
+ required_ruby_version: !ruby/object:Gem::Requirement
255
+ requirements:
256
+ - - ">="
257
+ - !ruby/object:Gem::Version
258
+ version: 2.5.0
259
+ required_rubygems_version: !ruby/object:Gem::Requirement
260
+ requirements:
261
+ - - ">="
262
+ - !ruby/object:Gem::Version
263
+ version: '0'
264
+ requirements: []
265
+ rubygems_version: 3.6.0.dev
266
+ specification_version: 4
267
+ summary: Rack HTTP server for fast clients and Unix
268
+ test_files:
269
+ - test/unit/test_configurator.rb
270
+ - test/unit/test_http_parser.rb
271
+ - test/unit/test_http_parser_ng.rb
272
+ - test/unit/test_request.rb
273
+ - test/unit/test_server.rb
274
+ - test/unit/test_util.rb
275
+ - test/unit/test_waiter.rb