unicorn 5.3.1 → 5.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +5 -5
  2. data/.manifest +2 -0
  3. data/.olddoc.yml +1 -1
  4. data/Application_Timeouts +4 -4
  5. data/Documentation/unicorn.1.txt +1 -1
  6. data/Documentation/unicorn_rails.1.txt +6 -8
  7. data/GIT-VERSION-FILE +1 -1
  8. data/GIT-VERSION-GEN +1 -1
  9. data/GNUmakefile +6 -1
  10. data/ISSUES +10 -10
  11. data/LATEST +22 -102
  12. data/LICENSE +2 -2
  13. data/Links +9 -7
  14. data/NEWS +107 -0
  15. data/README +13 -6
  16. data/Sandbox +2 -2
  17. data/bin/unicorn +3 -1
  18. data/bin/unicorn_rails +2 -2
  19. data/examples/logrotate.conf +1 -1
  20. data/examples/nginx.conf +3 -2
  21. data/ext/unicorn_http/common_field_optimization.h +24 -6
  22. data/ext/unicorn_http/extconf.rb +30 -0
  23. data/ext/unicorn_http/global_variables.h +2 -2
  24. data/ext/unicorn_http/httpdate.c +2 -2
  25. data/ext/unicorn_http/unicorn_http.c +229 -219
  26. data/ext/unicorn_http/unicorn_http.rl +19 -9
  27. data/lib/unicorn/configurator.rb +13 -2
  28. data/lib/unicorn/http_request.rb +2 -2
  29. data/lib/unicorn/http_response.rb +3 -2
  30. data/lib/unicorn/http_server.rb +21 -23
  31. data/lib/unicorn/launcher.rb +1 -1
  32. data/lib/unicorn/socket_helper.rb +4 -3
  33. data/lib/unicorn/util.rb +3 -3
  34. data/lib/unicorn/version.rb +1 -1
  35. data/lib/unicorn/worker.rb +16 -2
  36. data/lib/unicorn.rb +26 -9
  37. data/man/man1/unicorn.1 +7 -5
  38. data/man/man1/unicorn_rails.1 +11 -11
  39. data/t/README +4 -4
  40. data/t/hijack.ru +12 -0
  41. data/t/t0200-rack-hijack.sh +22 -1
  42. data/t/t0301-no-default-middleware-ignored-in-config.sh +25 -0
  43. data/t/t0301.ru +13 -0
  44. data/test/exec/test_exec.rb +6 -7
  45. data/test/unit/test_ccc.rb +1 -1
  46. data/test/unit/test_droplet.rb +1 -1
  47. data/test/unit/test_http_parser.rb +16 -0
  48. data/test/unit/test_request.rb +10 -10
  49. data/test/unit/test_server.rb +5 -5
  50. data/test/unit/test_signals.rb +2 -2
  51. data/test/unit/test_socket_helper.rb +4 -4
  52. data/test/unit/test_util.rb +25 -0
  53. data/unicorn.gemspec +1 -1
  54. metadata +5 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: cae827cc4674fdbfd9291caf3037f0fe4a5e67b7
4
- data.tar.gz: e6518f02407def59575f3efb01a54019e0fdcab9
2
+ SHA256:
3
+ metadata.gz: c0ccf5d1fa9326ffe756484e343d135b31e82f02260901e12effb9675a94e9bb
4
+ data.tar.gz: c273ee8cc51bdad405c8c35f814b66bd7c571b9e50947e9cf974c10a8f55107f
5
5
  SHA512:
6
- metadata.gz: 2a9bd5f4dacb2aa56002b9899d1725bdfc124def5b9287ff464b3ed0e47785db1aa14b52757173d990972ad5a3a4afc44e37f052f7ef8ac92ae7fac0daa3645d
7
- data.tar.gz: da9be558581cb34ee8b8c81bdcfcd659dc5e26d0cc42aa291ced5749ea07cbfe14fdce7a2fbfd43339990331e9c58e346d0129ea035c817ff59c8825d34f5645
6
+ metadata.gz: 6e3efff490b9b3ed6ce63ae9a179abb1f1199f7fd0a6799a71b3e6124e1ea9c64096eafd40039a6d485e47c9b1ccd77d3479c098c04935048101bf2c02dcad9e
7
+ data.tar.gz: 7a7f7ce0fbb2295882b13e641522b112cc8a4b60a767219fdf4734487b329e8ffc45bde32e96b7064b62738ebf20ee8b9324473542d8ef2eb4bd14eac7de3f91
data/.manifest CHANGED
@@ -128,6 +128,8 @@ t/t0116-client_body_buffer_size.sh
128
128
  t/t0116.ru
129
129
  t/t0200-rack-hijack.sh
130
130
  t/t0300-no-default-middleware.sh
131
+ t/t0301-no-default-middleware-ignored-in-config.sh
132
+ t/t0301.ru
131
133
  t/t9000-preread-input.sh
132
134
  t/t9001-oob_gc.sh
133
135
  t/t9002-oob_gc-path.sh
data/.olddoc.yml CHANGED
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  cgit_url: https://bogomips.org/unicorn.git
3
- git_url: git://bogomips.org/unicorn.git
3
+ git_url: https://bogomips.org/unicorn.git
4
4
  rdoc_url: https://bogomips.org/unicorn/
5
5
  ml_url: https://bogomips.org/unicorn-public/
6
6
  merge_html:
data/Application_Timeouts CHANGED
@@ -23,10 +23,10 @@ Most database adapters allow configurable timeouts.
23
23
  Net::HTTP and Net::SMTP in the Ruby standard library allow
24
24
  configurable timeouts.
25
25
 
26
- Even for things as fast as {memcached}[http://memcached.org/],
27
- {dalli}[http://rubygems.org/gems/dalli],
28
- {memcached}[http://rubygems.org/gems/memcached] and
29
- {memcache-client}[http://rubygems.org/gems/memcache-client] RubyGems all
26
+ Even for things as fast as {memcached}[https://memcached.org/],
27
+ {dalli}[https://rubygems.org/gems/dalli],
28
+ {memcached}[https://rubygems.org/gems/memcached] and
29
+ {memcache-client}[https://rubygems.org/gems/memcache-client] RubyGems all
30
30
  offer configurable timeouts.
31
31
 
32
32
  Consult the relevant documentation for the libraries you use on
@@ -182,6 +182,6 @@ the unicorn config file.
182
182
  * [Rackup HowTo][3]
183
183
 
184
184
  [1]: https://bogomips.org/unicorn/
185
- [2]: http://www.rubydoc.info/github/rack/rack/
185
+ [2]: https://www.rubydoc.info/github/rack/rack/
186
186
  [3]: https://github.com/rack/rack/wiki/tutorial-rackup-howto
187
187
  [4]: https://bogomips.org/unicorn/SIGNALS.html
@@ -12,14 +12,12 @@ unicorn_rails [-c CONFIG_FILE] [-E RAILS_ENV] [-D] [RACKUP_FILE]
12
12
 
13
13
  # DESCRIPTION
14
14
 
15
- A rackup(1)-like command to launch Rails applications using Unicorn. It
16
- is expected to be started in your Rails application root (RAILS_ROOT),
17
- but the "working_directory" directive may be used in the CONFIG_FILE.
15
+ A rackup(1)-like command to launch ancient Rails (2.x and earlier)
16
+ applications using Unicorn. Rails 3 (and later) support Rack natively,
17
+ so users are encouraged to use unicorn(1) instead of unicorn_rails(1).
18
18
 
19
- It is designed to help Rails 1.x and 2.y users transition to Rack, but
20
- it is NOT needed for Rails 3 applications. Rails 3 users are encouraged
21
- to use unicorn(1) instead of unicorn_rails(1). Users of Rails 1.x/2.y
22
- may also use unicorn(1) instead of unicorn_rails(1).
19
+ It is expected to be started in your Rails application root (RAILS_ROOT),
20
+ but the "working_directory" directive may be used in the CONFIG_FILE.
23
21
 
24
22
  The outward interface resembles rackup(1), the internals and default
25
23
  middleware loading is designed like the `script/server` command
@@ -170,6 +168,6 @@ used by Unicorn.
170
168
  * [Rackup HowTo][3]
171
169
 
172
170
  [1]: https://bogomips.org/unicorn/
173
- [2]: http://www.rubydoc.info/github/rack/rack/
171
+ [2]: https://www.rubydoc.info/github/rack/rack/
174
172
  [3]: https://github.com/rack/rack/wiki/tutorial-rackup-howto
175
173
  [4]: https://bogomips.org/unicorn/SIGNALS.html
data/GIT-VERSION-FILE CHANGED
@@ -1 +1 @@
1
- GIT_VERSION = 5.3.1
1
+ GIT_VERSION = 5.5.1
data/GIT-VERSION-GEN CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
- DEF_VER = "v5.3.1"
2
+ DEF_VER = "v5.5.1"
3
3
  CONSTANT = "Unicorn::Const::UNICORN_VERSION"
4
4
  RVF = "lib/unicorn/version.rb"
5
5
  GVF = "GIT-VERSION-FILE"
data/GNUmakefile CHANGED
@@ -175,7 +175,7 @@ doc: .document $(ext)/unicorn_http.c man html .olddoc.yml $(PLACEHOLDERS)
175
175
  find bin lib -type f -name '*.rbc' -exec rm -f '{}' ';'
176
176
  $(RM) -r doc
177
177
  $(OLDDOC) prepare
178
- $(RDOC) -f oldweb
178
+ $(RDOC) -f dark216
179
179
  $(OLDDOC) merge
180
180
  install -m644 COPYING doc/COPYING
181
181
  install -m644 NEWS.atom.xml doc/NEWS.atom.xml
@@ -249,5 +249,10 @@ endif
249
249
  $(PLACEHOLDERS):
250
250
  echo olddoc_placeholder > $@
251
251
 
252
+ check-warnings:
253
+ @(for i in $$(git ls-files '*.rb' bin | grep -v '^setup\.rb$$'); \
254
+ do $(RUBY) --disable-gems -d -W2 -c \
255
+ $$i; done) | grep -v '^Syntax OK$$' || :
256
+
252
257
  .PHONY: .FORCE-GIT-VERSION-FILE doc $(T) $(slow_tests) man
253
258
  .PHONY: test-install
data/ISSUES CHANGED
@@ -15,6 +15,11 @@ submit patches and/or obtain support after you have searched the
15
15
  * The email submission port (587) is enabled on the bogomips.org MX:
16
16
  https://bogomips.org/unicorn-public/20141004232241.GA23908@dcvr.yhbt.net/t/
17
17
 
18
+ We will never have a centralized or formal bug tracker. Instead we
19
+ can interoperate with any bug tracker which can Cc: us plain-text to
20
+ mailto:unicorn-public@bogomips.org This includes the Debian BTS
21
+ at https://bugs.debian.org/unicorn and possibly others.
22
+
18
23
  If your issue is of a sensitive nature or you're just shy in public,
19
24
  use anonymity tools such as Tor or Mixmaster; and rely on the public
20
25
  mail archives for responses. Be sure to scrub sensitive log messages
@@ -34,6 +39,7 @@ https://bugs.ruby-lang.org/ and discuss+fix them on the ruby-core
34
39
  list at mailto:ruby-core@ruby-lang.org
35
40
  Subscription to post is required to ruby-core, unfortunately:
36
41
  mailto:ruby-core-request@ruby-lang.org?subject=subscribe
42
+ Unofficial archives are available at: https://public-inbox.org/ruby-core/
37
43
 
38
44
  For uncommon bugs in Rack, we may forward bugs to
39
45
  mailto:rack-devel@googlegroups.com and discuss there.
@@ -41,6 +47,7 @@ Subscription (without any web UI or Google account) is possible via:
41
47
  mailto:rack-devel+subscribe@googlegroups.com
42
48
  Note: not everyone can use the proprietary bug tracker used by Rack,
43
49
  but their mailing list remains operational.
50
+ Unofficial archives are available at: https://public-inbox.org/rack-devel/
44
51
 
45
52
  Uncommon bugs we encounter in the Linux kernel should be Cc:-ed to the
46
53
  Linux kernel mailing list (LKML) at mailto:linux-kernel@vger.kernel.org
@@ -49,11 +56,12 @@ and subsystem maintainers such as mailto:netdev@vger.kernel.org
49
56
  involved with any problematic commits (including those in the
50
57
  Signed-off-by: and other trailer lines). No subscription is necessary,
51
58
  and the our mailing list follows the same conventions as LKML for
52
- interopability. There is a kernel.org Bugzilla instance, but it is
53
- ignored by most developers.
59
+ interopability. Archives are available at https://lore.kernel.org/lkml/
60
+ There is a kernel.org Bugzilla instance, but it is ignored by most.
54
61
 
55
62
  Likewise for any rare glibc bugs we might encounter, we should Cc:
56
63
  mailto:libc-alpha@sourceware.org
64
+ Unofficial archives are available at: https://public-inbox.org/libc-alpha/
57
65
  Keep in mind glibc upstream does use Bugzilla for tracking bugs:
58
66
  https://sourceware.org/bugzilla/
59
67
 
@@ -86,11 +94,3 @@ Or Atom feeds:
86
94
  The HTML archives at https://bogomips.org/unicorn-public/
87
95
  also has links to per-thread Atom feeds and downloadable
88
96
  mboxes.
89
-
90
- You may optionally subscribe via plain-text email:
91
-
92
- mailto:unicorn-public+subscribe@bogomips.org
93
- (and confirming the auto-reply)
94
-
95
- Just keep in mind we suck at delivering email, so using NNTP,
96
- or Atom feeds might be a better bet...
data/LATEST CHANGED
@@ -1,103 +1,23 @@
1
- === unicorn 5.3.0 / 2017-04-01 08:03 UTC
2
-
3
- A couple of portability fixes from Dylan Thacker-Smith and
4
- Jeremy Evans since 5.3.0.pre1 over a week ago, but this looks
5
- ready for a stable release, today.
6
-
7
- When I started this over 8 years ago, I wondered if this would
8
- just end up being an April Fools' joke. Guess not. I guess I
9
- somehow tricked people into using a terribly marketed web server
10
- that cannot talk directly to untrusted clients :x Anyways,
11
- unicorn won't be able to handle slow clients 8 years from now,
12
- either, or 80 years from now. And I vow never to learn to use
13
- new-fangled things like epoll, kqueue, or threads :P
14
-
15
- Anyways, this is a largish release with several new features,
16
- and no backwards incompatibilities.
17
-
18
- Simon Eskildsen contributed heavily using TCP_INFO under Linux
19
- to implement the (now 5 year old) check_client_connection feature:
20
-
21
- https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-check_client_connection
22
- https://bogomips.org/unicorn-public/?q=s:check_client_connection&d:..20170401&x=t
23
-
24
- This also led to FreeBSD and OpenBSD portability improvements in
25
- one of our dependencies, raindrops:
26
-
27
- https://bogomips.org/raindrops-public/20170323024829.GA5190@dcvr/T/#u
28
-
29
- Jeremy Evans contributed several new features. First he
30
- implemented after_worker_exit to aid debugging:
31
-
32
- https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-after_worker_exit
33
- https://bogomips.org/unicorn-public/?q=s:after_worker_exit&d:..20170401&x=t#t
34
-
35
- And then security-related features to isolate workers. Workers
36
- may now chroot to drop access to the master filesystem, and the
37
- new after_worker_ready configuration hook now exists to aid with
38
- chroot support in workers:
39
-
40
- https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-after_worker_ready
41
- https://bogomips.org/unicorn/Unicorn/Worker.html#method-i-user
42
- https://bogomips.org/unicorn-public/?q=s:after_worker_ready&d:..20170401&x=t#t
43
- https://bogomips.org/unicorn-public/?q=s:chroot&d:..20170401&x=t#t
44
-
45
- Additionally, workers may run in a completely different VM space
46
- (nullifying preload_app and any CoW savings) with the new
47
- worker_exec option:
48
-
49
- https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-worker_exec
50
- https://bogomips.org/unicorn-public/?q=s:worker_exec&d:..20170401&x=t#t
51
-
52
- There are also several improvements to FreeBSD and OpenBSD
53
- support with the addition of these features.
54
-
55
- shortlog of changes since v5.2.0 (2016-10-31):
56
-
57
- Dylan Thacker-Smith (1):
58
- Check for Socket::TCP_INFO constant before trying to get TCP_INFO
59
-
60
- Eric Wong (30):
61
- drop rb_str_set_len compatibility replacement
62
- TUNING: document THP caveat for Linux users
63
- tee_input: simplify condition for IO#write
64
- remove response_start_sent
65
- http_request: freeze constant strings passed IO#write
66
- Revert "remove response_start_sent"
67
- t/t0012-reload-empty-config.sh: access ivars directly if needed
68
- t0011-active-unix-socket.sh: fix race condition in test
69
- new test for check_client_connection
70
- revert signature change to HttpServer#process_client
71
- support "struct tcp_info" on non-Linux and Ruby 2.2+
72
- unicorn_http: reduce rb_global_variable calls
73
- oob_gc: rely on opt_aref_with optimization on Ruby 2.2+
74
- http_request: reduce insn size for check_client_connection
75
- freebsd: avoid EINVAL when setting accept filter
76
- test-lib: expr(1) portability fix
77
- tests: keep disabled tests defined
78
- test_exec: SO_KEEPALIVE value only needs to be true
79
- doc: fix links to raindrops project
80
- http_request: support proposed Raindrops::TCP states on non-Linux
81
- ISSUES: expand on mail archive info + subscription disclaimer
82
- test_ccc: use a pipe to synchronize test
83
- doc: remove private email support address
84
- input: update documentation and hide internals.
85
- http_server: initialize @pid ivar
86
- gemspec: remove olddoc from build dependency
87
- doc: add version annotations for new features
88
- unicorn 5.3.0.pre1
89
- doc: note after_worker_exit is also 5.3.0+
90
- test_exec: SO_KEEPALIVE value only needs to be true (take #2)
91
-
92
- Jeremy Evans (7):
93
- Add after_worker_exit configuration option
94
- Fix code example in after_worker_exit documentation
95
- Add support for chroot to Worker#user
96
- Add after_worker_ready configuration option
97
- Add worker_exec configuration option
98
- Don't pass a block for fork when forking workers
99
- Check for SocketError on first ccc attempt
100
-
101
- Simon Eskildsen (1):
102
- check_client_connection: use tcp state on linux
1
+ === unicorn 5.5.0 / 2019-03-04 00:41 UTC
2
+
3
+ Mostly identical to 5.5.0.pre1, which I didn't hear any feedback
4
+ from:
5
+
6
+ https://bogomips.org/unicorn-public/20181220222842.GA27382@dcvr/
7
+
8
+ > Jeremy Evans contributed the "default_middleware" configuration option:
9
+ >
10
+ > https://bogomips.org/unicorn-public/20180913192055.GD48926@jeremyevans.local/
11
+ >
12
+ > Jeremy also contributed the ability to use separate groups for the process
13
+ > and log files:
14
+ >
15
+ > https://bogomips.org/unicorn-public/20180913192449.GE48926@jeremyevans.local/
16
+ >
17
+ > There's also a couple of uninteresting minor optimizations and
18
+ > documentation additions.
19
+
20
+ Otherwise, there's one extra change to use
21
+ rb_gc_register_mark_object which is finally a documented part of
22
+ the Ruby C-API, but has existed since the 1.9 days.
103
23
 
data/LICENSE CHANGED
@@ -8,8 +8,8 @@ any later version. We currently prefer the GPLv3 or later for
8
8
  derivative works, but the GPLv2 is fine.
9
9
 
10
10
  The complete texts of the GPLv2 and GPLv3 are below:
11
- GPLv2 - http://www.gnu.org/licenses/gpl-2.0.txt
12
- GPLv3 - http://www.gnu.org/licenses/gpl-3.0.txt
11
+ GPLv2 - https://www.gnu.org/licenses/gpl-2.0.txt
12
+ GPLv3 - https://www.gnu.org/licenses/gpl-3.0.txt
13
13
 
14
14
  You may (against our _preference_) also use the Ruby 1.8 license terms
15
15
  which we inherited from the original Mongrel project when we forked it:
data/Links CHANGED
@@ -10,7 +10,7 @@ The unicorn project is not responsible for the content in these links.
10
10
  Furthermore, the unicorn project has never, does not and will never endorse:
11
11
 
12
12
  * any for-profit entities or services
13
- * any non-{Free Software}[http://www.gnu.org/philosophy/free-sw.html]
13
+ * any non-{Free Software}[https://www.gnu.org/philosophy/free-sw.html]
14
14
 
15
15
  The existence of these links does not imply endorsement of any entities
16
16
  or services behind them.
@@ -31,26 +31,28 @@ or services behind them.
31
31
 
32
32
  === unicorn is written to work with
33
33
 
34
- * {Rack}[http://rack.github.io/] - a minimal interface between webservers
34
+ * {Rack}[https://rack.github.io/] - a minimal interface between webservers
35
35
  supporting Ruby and Ruby frameworks
36
36
 
37
37
  * {Ruby}[https://www.ruby-lang.org/en/] - the programming language of
38
38
  Rack and unicorn
39
39
 
40
- * {nginx}[http://nginx.org/] (Free versions) -
40
+ * {nginx}[https://nginx.org/] (Free versions) -
41
41
  the reverse proxy for use with unicorn
42
42
 
43
43
  === Derivatives
44
44
 
45
- * {Green Unicorn}[http://gunicorn.org/] - a Python version of unicorn
45
+ * {Green Unicorn}[https://gunicorn.org/] - a Python version of unicorn
46
46
 
47
- * {Starman}[http://search.cpan.org/dist/Starman/] - Plack/PSGI version
47
+ * {Starman}[https://metacpan.org/release/Starman/] - Plack/PSGI version
48
48
  of unicorn
49
49
 
50
50
  === Prior Work
51
51
 
52
- * {Mongrel}[http://rubygems.org/gems/mongrel] - the awesome webserver
53
- unicorn is based on
52
+ * {Mongrel}[https://rubygems.org/gems/mongrel] - the awesome webserver
53
+ unicorn is based on. A historical archive of the mongrel dev list
54
+ featuring early discussions of unicorn is available at:
55
+ https://bogomips.org/mongrel-devel/
54
56
 
55
57
  * {david}[https://bogomips.org/david.git] - a tool to explain why you need
56
58
  nginx in front of unicorn
data/NEWS CHANGED
@@ -1,3 +1,110 @@
1
+ === unicorn 5.5.0 / 2019-03-04 00:41 UTC
2
+
3
+ Mostly identical to 5.5.0.pre1, which I didn't hear any feedback
4
+ from:
5
+
6
+ https://bogomips.org/unicorn-public/20181220222842.GA27382@dcvr/
7
+
8
+ > Jeremy Evans contributed the "default_middleware" configuration option:
9
+ >
10
+ > https://bogomips.org/unicorn-public/20180913192055.GD48926@jeremyevans.local/
11
+ >
12
+ > Jeremy also contributed the ability to use separate groups for the process
13
+ > and log files:
14
+ >
15
+ > https://bogomips.org/unicorn-public/20180913192449.GE48926@jeremyevans.local/
16
+ >
17
+ > There's also a couple of uninteresting minor optimizations and
18
+ > documentation additions.
19
+
20
+ Otherwise, there's one extra change to use
21
+ rb_gc_register_mark_object which is finally a documented part of
22
+ the Ruby C-API, but has existed since the 1.9 days.
23
+
24
+ === unicorn 5.5.0.pre1 / 2018-12-20 20:11 UTC
25
+
26
+ Jeremy Evans contributed the "default_middleware" configuration option:
27
+
28
+ https://bogomips.org/unicorn-public/20180913192055.GD48926@jeremyevans.local/
29
+
30
+ Jeremy also contributed the ability to use separate groups for the process
31
+ and log files:
32
+
33
+ https://bogomips.org/unicorn-public/20180913192449.GE48926@jeremyevans.local/
34
+
35
+ There's also a couple of uninteresting minor optimizations and
36
+ documentation additions.
37
+
38
+ Eric Wong (10):
39
+ remove random seed reset atfork
40
+ use IO#wait instead of kgio_wait_readable
41
+ Merge branch '5.4-stable'
42
+ shrink pipes under Linux
43
+ socket_helper: add hint for FreeBSD users for accf_http(9)
44
+ tests: ensure -N/--no-default-middleware not supported in config.ru
45
+ doc: update more URLs to use HTTPS and avoid redirects
46
+ deduplicate strings VM-wide in Ruby 2.5+
47
+ doc/ISSUES: add links to git clone-able mail archives of our dependencies
48
+ README: minor updates and additional disclaimer
49
+
50
+ Jeremy Evans (2):
51
+ Make Worker#user support different process primary group and log file group
52
+ Support default_middleware configuration option
53
+
54
+ === unicorn 5.4.1 / 2018-07-23 17:13 UTC
55
+
56
+ This release quiets some warnings for Ruby 2.6 preview releases
57
+ and enables tests to pass under Ruby 1.9.3. Otherwise, nothing
58
+ interesting for Ruby 2.0..2.5 users. *YAWN*
59
+
60
+ Eric Wong (1):
61
+ quiet some mismatched indentation warnings
62
+
63
+ Fumiaki MATSUSHIMA (1):
64
+ Use IO#wait instead to fix test for Ruby 1.9
65
+
66
+ === unicorn 5.4.0 / 2017-12-23 23:33 UTC
67
+
68
+ Rack hijack support improves as the app code can capture and use
69
+ the Rack `env' privately without copying it (to avoid clobbering
70
+ by another client). Thanks to Sam Saffron for reporting and
71
+ testing this new feature:
72
+ https://bogomips.org/unicorn-public/CAAtdryPG3nLuyo0jxfYW1YHu1Q+ZpkLkd4KdWC8vA46B5haZxw@mail.gmail.com/T/
73
+
74
+ We also now support $DEBUG being set by the Rack app (instead of
75
+ relying on the "-d" CLI switch). Thanks to James P Robinson Jr
76
+ for reporting this bug:
77
+ https://bogomips.org/unicorn-public/D6324CB4.7BC3E%25james.robinson3@cigna.com/T/
78
+ (Coincidentally, this fix will be irrelevant for Ruby 2.5
79
+ which requires 'pp' by default)
80
+
81
+ There's a few minor test cleanups and documentation updates, too.
82
+
83
+ All commits since v5.3.1 (2017-10-03):
84
+
85
+ reduce method calls with String#start_with?
86
+ require 'pp' if $DEBUG is set by Rack app
87
+ avoid reusing env on hijack
88
+ tests: cleanup some unused variable warnings
89
+ ISSUES: add a note about Debian BTS interopability
90
+
91
+ Roughly all mailing discussions since the last release:
92
+
93
+ https://bogomips.org/unicorn-public/?q=d:20171004..20171223
94
+
95
+ === unicorn 5.3.1 / 2017-10-03 19:03 UTC
96
+
97
+ This release fixes an occasional GC problem introduced in v5.3.0
98
+ to reduce global variable overhead (commit 979ebcf91705709b)
99
+
100
+ Thanks to Xuanzhong Wei for the patch which lead to this release:
101
+
102
+ https://bogomips.org/unicorn-public/20171003182054.76392-1-azrlew@gmail.com/T/#u
103
+ https://bogomips.org/unicorn-public/20171003145718.30404-1-azrlew@gmail.com/T/#u
104
+
105
+ Xuanzhong Wei (1):
106
+ fix GC issue on rb_global_variable array
107
+
1
108
  === unicorn 5.3.0 / 2017-04-01 08:03 UTC
2
109
 
3
110
  A couple of portability fixes from Dylan Thacker-Smith and
data/README CHANGED
@@ -10,7 +10,7 @@ both the the request and response in between unicorn and slow clients.
10
10
 
11
11
  * Designed for Rack, Unix, fast clients, and ease-of-debugging. We
12
12
  cut out everything that is better supported by the operating system,
13
- {nginx}[http://nginx.org/] or {Rack}[http://rack.github.io/].
13
+ {nginx}[https://nginx.org/] or {Rack}[https://rack.github.io/].
14
14
 
15
15
  * Compatible with Ruby 1.9.3 and later.
16
16
  unicorn 4.x remains supported for Ruby 1.8 users.
@@ -37,12 +37,15 @@ both the the request and response in between unicorn and slow clients.
37
37
  You can upgrade unicorn, your entire application, libraries
38
38
  and even your Ruby interpreter without dropping clients.
39
39
 
40
+ * transparent upgrades using systemd socket activation is
41
+ supported since unicorn 5.0
42
+
40
43
  * before_fork and after_fork hooks in case your application
41
44
  has special needs when dealing with forked processes. These
42
45
  should not be needed when the "preload_app" directive is
43
46
  false (the default).
44
47
 
45
- * Can be used with copy-on-write-friendly memory management
48
+ * Can be used with copy-on-write-friendly GC in Ruby 2.0+
46
49
  to save memory (by setting "preload_app" to true).
47
50
 
48
51
  * Able to listen on multiple interfaces including UNIX sockets,
@@ -55,7 +58,7 @@ both the the request and response in between unicorn and slow clients.
55
58
 
56
59
  == License
57
60
 
58
- unicorn is copyright 2009-2016 by all contributors (see logs in git).
61
+ unicorn is copyright 2009-2018 by all contributors (see logs in git).
59
62
  It is based on Mongrel 1.1.5.
60
63
  Mongrel is copyright 2007 Zed A. Shaw and contributors.
61
64
 
@@ -77,13 +80,13 @@ You may install it via RubyGems on RubyGems.org:
77
80
  You can get the latest source via git from the following locations
78
81
  (these versions may not be stable):
79
82
 
80
- git://bogomips.org/unicorn.git
81
- git://repo.or.cz/unicorn.git (mirror)
83
+ https://bogomips.org/unicorn.git
84
+ https://repo.or.cz/unicorn.git (mirror)
82
85
 
83
86
  You may browse the code from the web:
84
87
 
85
88
  * https://bogomips.org/unicorn.git
86
- * http://repo.or.cz/w/unicorn.git (gitweb)
89
+ * https://repo.or.cz/w/unicorn.git (gitweb)
87
90
 
88
91
  See the HACKING guide on how to contribute and build prerelease gems
89
92
  from git.
@@ -122,6 +125,10 @@ unicorn is designed to only serve fast clients either on the local host
122
125
  or a fast LAN. See the PHILOSOPHY and DESIGN documents for more details
123
126
  regarding this.
124
127
 
128
+ Due to its ability to tolerate crashes and isolate clients, unicorn
129
+ is unfortunately known to prolong the existence of bugs in applications
130
+ and libraries which run on top of it.
131
+
125
132
  == Contact
126
133
 
127
134
  All feedback (bug reports, user/development dicussion, patches, pull
data/Sandbox CHANGED
@@ -3,7 +3,7 @@
3
3
  Since unicorn includes executables and is usually used to start a Ruby
4
4
  process, there are certain caveats to using it with tools that sandbox
5
5
  RubyGems installations such as
6
- {Bundler}[http://bundler.io/] or
6
+ {Bundler}[https://bundler.io/] or
7
7
  {Isolate}[https://github.com/jbarnette/isolate].
8
8
 
9
9
  == General deployment
@@ -66,7 +66,7 @@ before_exec hook as illustrated by https://gist.github.com/534668
66
66
  Ruby 2.0.0 enforces FD_CLOEXEC on file descriptors by default. unicorn
67
67
  has been prepared for this behavior since unicorn 4.1.0, and bundler
68
68
  needs the "--keep-file-descriptors" option for "bundle exec":
69
- http://bundler.io/man/bundle-exec.1.html
69
+ https://bundler.io/man/bundle-exec.1.html
70
70
 
71
71
  == Isolate
72
72
 
data/bin/unicorn CHANGED
@@ -6,6 +6,7 @@ require 'optparse'
6
6
  ENV["RACK_ENV"] ||= "development"
7
7
  rackup_opts = Unicorn::Configurator::RACKUP
8
8
  options = rackup_opts[:options]
9
+ set_no_default_middleware = true
9
10
 
10
11
  op = OptionParser.new("", 24, ' ') do |opts|
11
12
  cmd = File.basename($0)
@@ -60,7 +61,7 @@ op = OptionParser.new("", 24, ' ') do |opts|
60
61
 
61
62
  opts.on("-N", "--no-default-middleware",
62
63
  "do not load middleware implied by RACK_ENV") do |e|
63
- rackup_opts[:no_default_middleware] = true
64
+ rackup_opts[:no_default_middleware] = true if set_no_default_middleware
64
65
  end
65
66
 
66
67
  opts.on("-D", "--daemonize", "run daemonized in the background") do |d|
@@ -110,6 +111,7 @@ op = OptionParser.new("", 24, ' ') do |opts|
110
111
  opts.parse! ARGV
111
112
  end
112
113
 
114
+ set_no_default_middleware = false
113
115
  app = Unicorn.builder(ARGV[0] || 'config.ru', op)
114
116
  op = nil
115
117
 
data/bin/unicorn_rails CHANGED
@@ -132,11 +132,11 @@ def rails_builder(ru, op, daemonize)
132
132
 
133
133
  # this lambda won't run until after forking if preload_app is false
134
134
  # this runs after config file reloading
135
- lambda do ||
135
+ lambda do |x, server|
136
136
  # Rails 3 includes a config.ru, use it if we find it after
137
137
  # working_directory is bound.
138
138
  ::File.exist?('config.ru') and
139
- return Unicorn.builder('config.ru', op).call
139
+ return Unicorn.builder('config.ru', op).call(x, server)
140
140
 
141
141
  # Load Rails and (possibly) the private version of Rack it bundles.
142
142
  begin
@@ -2,7 +2,7 @@
2
2
  # /etc/logrotate.d/unicorn_app on my Debian systems
3
3
  #
4
4
  # See the logrotate(8) manpage for more information:
5
- # http://linux.die.net/man/8/logrotate
5
+ # https://linux.die.net/man/8/logrotate
6
6
  #
7
7
  # public logrotate-related discussion in our archives:
8
8
  # https://bogomips.org/unicorn-public/?q=logrotate
data/examples/nginx.conf CHANGED
@@ -56,7 +56,8 @@ http {
56
56
  # to configure it all in one place here for static files and also
57
57
  # to disable gzip for clients who don't get gzip/deflate right.
58
58
  # There are other gzip settings that may be needed used to deal with
59
- # bad clients out there, see http://wiki.nginx.org/NginxHttpGzipModule
59
+ # bad clients out there, see
60
+ # https://nginx.org/en/docs/http/ngx_http_gzip_module.html
60
61
  gzip on;
61
62
  gzip_http_version 1.0;
62
63
  gzip_proxied any;
@@ -117,7 +118,7 @@ http {
117
118
 
118
119
  location @app {
119
120
  # an HTTP header important enough to have its own Wikipedia entry:
120
- # http://en.wikipedia.org/wiki/X-Forwarded-For
121
+ # https://en.wikipedia.org/wiki/X-Forwarded-For
121
122
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
122
123
 
123
124
  # enable this if you forward HTTPS traffic to unicorn,