Unicorn is a Rack HTTP server for Unix, fast clients and nothing else[1]
We now have support for “Transfer-Encoding: chunked” bodies in
requests. Not only that, Rack applications reading input bodies
get that data streamed off to the client socket on an as-needed
basis. This allows the application to do things like upload
progress notification and even tunneling of arbitrary stream
protocols via bidirectional chunked encoding.
See Unicorn::App::Inetd and examples/git.ru (including the
comments) for an example of tunneling the git:// protocol over
HTTP.
This release also gives applications the ability to respond
positively to “Expect: 100-continue” headers before being rerun
without closing the socket connection. See Unicorn::App::Inetd
for an example of how this is used.
This release is NOT recommended for production use.
Eric W. (43):
http_request: no need to reset the request
http_request: StringIO is binary for empty bodies (1.9)
http_request: fix typo for 1.9
Transfer-Encoding: chunked streaming input support
Unicorn::App::Inetd: reinventing Unix, poorly
README: update with mailing list info
local.mk.sample: publish_doc gzips all html, js, css
Put copyright text in new files, include GPL2 text
examples/cat-chunk-proxy: link to proposed curl(1) patch
Update TODO
Avoid duplicating the “Z” constant
Optimize body-less GET/HEAD requests (again)
tee_input: Don’t expose the @rd object as a return value
exec_cgi: small cleanups
README: another note about older Sinatra
tee_input: avoid defining a @rd.size method
Make TeeInput easier to use
test_upload: add tests for chunked encoding
GNUmakefile: more stringent error checking in tests
test_upload: fix ECONNRESET with 1.9
GNUmakefile: allow TRACER= to be specified for tests
test_rails: workaround long-standing 1.9 bug
tee_input: avoid rereading fresh data
“Fix” tests that break with stream_input=false
inetd: fix broken constant references
configurator: provide stream_input (true|false) option
chunked_reader: simpler interface
http_request: force BUFFER to be Encoding::BINARY
ACK clients on “Expect: 100-continue” header
Only send “100 Continue” when no body has been sent
http_request: tighter Transfer-Encoding: “chunked” check
Add trailer_parser for parsing trailers
chunked_reader: Add test for chunk parse failure
TeeInput: use only one IO for tempfile
trailer_parser: set keys with “HTTP_” prefix
TrailerParser integration into ChunkedReader
Unbind listeners as before stopping workers
Retry listen() on EADDRINUSE 5 times ever 500ms
Re-add support for non-portable socket options
Move “Expect: 100-continue” handling to the app
tee_input: avoid ignoring initial body blob
Force streaming input onto apps by default
unicorn 0.9.0
- site: http://unicorn.bogomips.org/
- git: git://git.bogomips.org/unicorn.git
- http+git: http://git.bogomips.org:8080/unicorn.git [1]
- cgit: Rack HTTP server for Unix and fast clients
- list: [email protected]
[1] - Actually, most of the new features in this release should in fact
work on non-Unix OSes so they can be adapted for other servers with
wider audiences.
[2] - This is the git:// protocol tunneled inside a bidirectional
“Transfer-Encoding: chunked” request/response using this latest
release of Unicorn.