Files | Admin

Notes:

Release Name: 0.98.0

Notes:
Unicorn is an HTTP server for Rack applications designed to only serve
fast clients on low-latency, high-bandwidth connections and take
advantage of features in Unix/Unix-like kernels.  Slow clients should
only be served by placing a reverse proxy capable of fully buffering
both the the request and response in between Unicorn and slow clients.

* http://unicorn.bogomips.org/
* mongrel-unicorn@rubyforge.org
* git://git.bogomips.org/unicorn.git

Changes:

Deployments that suspend or hibernate servers should no longer
have workers killed off (and restarted) upon resuming.

For Linux users of {raindrops}[http://raindrops.bogomips.org/]
(v0.2.0+) configuration is easier as raindrops can now
automatically detect the active listeners on the server
via the new Unicorn.listener_names singleton method.

For the pedantic, chunked request bodies without trailers are no
longer allowed to omit the final CRLF.  This shouldn't affect
any real and RFC-compliant clients out there.  Chunked requests
with trailers have always worked and continue to work the same
way.

The rest are mostly small internal cleanups and documentation
fixes.  See the commit logs for full details.



Changes: .document | 4 +- GIT-VERSION-GEN | 2 +- GNUmakefile | 16 ++++++++----- KNOWN_ISSUES | 20 +++++++++++++++++ README | 26 +++++++++++----------- Rakefile | 17 ++++++++------- bin/unicorn | 7 ++--- bin/unicorn_rails | 27 +++++++++++------------ ext/unicorn_http/unicorn_http.rl | 8 +----- lib/unicorn.rb | 43 ++++++++++++++++++++++++++----------- lib/unicorn/const.rb | 2 +- lib/unicorn/socket_helper.rb | 2 + test/rails/test_rails.rb | 2 +- test/unit/test_http_parser_ng.rb | 4 +++ test/unit/test_server.rb | 4 +++ test/unit/test_tee_input.rb | 32 ++++++++++++++++++++++++++- test/unit/test_util.rb | 10 ++++---- 17 files changed, 150 insertions(+), 76 deletions(-) commit 2db033e1285da6dc4e9c3e2a9519de776666a0cc Author: Eric Wong Date: Tue May 4 16:55:24 2010 -0700 unicorn 0.98.0 Deployments that suspend or hibernate servers should no longer have workers killed off (and restarted) upon resuming. For Linux users of {raindrops}[http://raindrops.bogomips.org/] (v0.2.0+) configuration is easier as raindrops can now automatically detect the active listeners on the server via the new Unicorn.listener_names singleton method. For the pedantic, chunked request bodies without trailers are no longer allowed to omit the final CRLF. This shouldn't affect any real and RFC-compliant clients out there. Chunked requests with trailers have always worked and continue to work the same way. The rest are mostly small internal cleanups and documentation fixes. See the commit logs for full details. commit 174b5d01e802c6a4ff9d1467f04c5acafb916105 Author: Eric Wong Date: Tue May 4 16:52:10 2010 -0700 README: avoid needless links to /Unicorn.html module It makes the HTML page too big and busy. commit 87b792445e5e38291fc50b6c3b825a63e9adf130 Author: Eric Wong Date: Fri Apr 30 00:47:28 2010 +0000 add global Unicorn.listener_names method This is useful as a :listeners argument when setting up Raindrops::Middleware (http://raindrops.bogomips.org/), as it can be done automatically. commit 83d2170442144a1b2f623b32a1291befaf59c968 Author: Eric Wong Date: Mon Apr 26 16:56:10 2010 -0700 GNUmakefile: fix backwards compat links for manpages commit 4bef5b2d0bf9cdad88a47a32b751f834877e4802 Author: Eric Wong Date: Mon Apr 26 16:17:26 2010 -0700 GNUmakefile: rdoc 2.5.x compatibility commit b8ca75667c5710ea43911d8eee994730a00d8eaa Author: Eric Wong Date: Mon Apr 26 16:12:43 2010 -0700 GNUmakefile: avoid FS namespace conflict 'tmp' may be a directory when using rake-compiler (or isolate), so avoid naming a file 'tmp' commit 8ae35a788bdfe24ad6bf58f19cad101acb1bd9f2 Merge: 6996cdd 3ce9257 Author: Eric Wong Date: Mon Apr 26 16:03:14 2010 -0700 Merge branch 'maint' * maint: unicorn 0.97.1 - fix HTTP parser for Rainbows!/Zbatery http: negative/invalid Content-Length raises exception commit 6996cdd8d7d36b72d4c1ee30a11969d164ed85e2 Author: Eric Wong Date: Mon Apr 26 15:49:01 2010 -0700 Rakefile: hopefully fix optional rake-compiler support commit c54df54f6633f3467b64fdfc9cbff278d02397ac Author: Eric Wong Date: Mon Apr 26 15:02:46 2010 -0700 http: pedantic fix for trailer-less chunked requests HTTP requests without trailers still need a CRLF after the last chunk, that is: it must end as: "0\r\n\r\n", not "0\r\n". So we'll always pretend there are trailers to parse for the sake of TeeInput. This is mostly a pedantic fix, as the two bytes in the socket buffer are unlikely to trigger protocol errors. commit de0e3a2f969730f4682daf6cff1e0d424ddd43e1 Author: Eric Wong Date: Tue Apr 20 22:42:34 2010 +0000 KNOWN_ISSUES: fix error in isolate example :x commit 6727d8ab1b2e841f7153bda071ab3b800bbce089 Author: Eric Wong Date: Tue Apr 20 20:48:24 2010 +0000 KNOWN_ISSUES: additional note for Isolate usage commit de58973a6025f799ee7897a2cf58bb01eca87631 Author: Eric Wong Date: Mon Apr 19 13:40:37 2010 -0700 http: negative/invalid Content-Length raises exception ...instead of tripping an assertion. This fixes a potential denial-of-service for servers exposed directly to untrusted clients. This bug does not affect supported Unicorn deployments as Unicorn is only supported with trusted clients (such as nginx) on a LAN. nginx is known to reject clients that send invalid Content-Length headers, so any deployments on a trusted LAN and/or behind nginx are safe. Servers affected by this bug include (but are not limited to) Rainbows! and Zbatery. This does not affect Thin nor Mongrel which never got request body filtering treatment that the Unicorn HTTP parser got in August 2009. commit 5dd4c12411b5567fb340e897d0b544dfff7fa7a2 Author: Eric Wong Date: Sat Apr 17 07:43:57 2010 -0700 avoid nuking workers after waking up from suspend/hibernate Trying to fix this issue again, as it seems to have been broken again. commit 900628706d6ced43fde614a6fc57f2d2d69e945d Author: Eric Wong Date: Sat Apr 17 07:33:53 2010 -0700 prefer explicit requires when possible There is no need to be using autoload except for HttpResponse which depends on Rack (which we want to load as late as possible). commit 22e3ed4de0e89b97dac91c95c796eb8a7f93e5de Author: Eric Wong Date: Thu Apr 8 18:05:43 2010 -0700 unicorn: load constants after app has loaded This will help ensure we use the same version of Rack the application uses and avoid loading conflicting/incompatible versions. commit 0792b37d5e28d3ea1585d5837682cde4d0319a8a Author: Eric Wong Date: Thu Apr 8 17:37:42 2010 -0700 bin/*: remove unnecessary listeners variable commit 9c52f98c77ad5bbe97455f43f5d31bd5759d0685 Author: Eric Wong Date: Thu Apr 8 17:32:41 2010 -0700 unicorn_rails: rename variable for consistency "ru" is the preferred name in Unicorn.builder, so we'll match that to make things easier to follow. commit 8054989137b84edfa6bf061f708716536dc05d59 Author: Eric Wong Date: Thu Apr 8 17:26:27 2010 -0700 unicorn_rails: respect user's encoding in config.ru in 1.9 Do not assume the user wants config.ru to be Encoding::BINARY for 1.9. This is a followup to a4a8bf7604d1c15c5a8fb9cb6be37e8bccb32e52 commit e1a72d58add4260feb6da56d9d588270173da74f Author: Eric Wong Date: Thu Apr 8 17:10:46 2010 -0700 unicorn_rails: use TOPLEVEL_BINDING for eval This is to ensure there are no namespace inconsistencies commit 105d9f8b87b0667686ba13960f734b90f3055977 Author: Eric Wong Date: Wed Mar 24 12:40:02 2010 -0700 KNOWN_ISSUES: document Array#shuffle / Array#sample issue under 1.9 We're one of the few forking apps that run into this rarely used feature, so we'll document it here. commit 36d0fa866ac696ee8acde74f2cffccd06ab8e816 Author: Eric Wong Date: Sat Mar 20 19:46:44 2010 -0700 tests: fix to run under Ruby 1.9.2dev Avoid Tempfile.new(nil), which breaks under Ruby 1.9.2 and was probably a bad idea to begin with.