Unicorn 4.3.0 - Rack HTTP server for fast clients and Unix

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.

Changes:

  • PATH_INFO (aka REQUEST_PATH) increased to 4096 (from 1024).
    This allows requests with longer path components and matches
    the system PATH_MAX value common to GNU/Linux systems for
    serving filesystem components with long names.

  • Apps that fork() (but do not exec()) internally for background
    tasks now indicate the end-of-request immediately after
    writing the Rack response.

Thanks to Hongli L., Lawrence P., Patrick Wenger and Nuo Yan
for their valuable feedback for this release.

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.

Changes:

  • Call shutdown(2) if a client EOFs on us during upload.
    We can avoid holding a socket open if the Rack app forked a
    process during uploads.

  • ignore potential Errno::ENOTCONN errors (from shutdown(2)).
    Even on LANs, connections can occasionally be accept()-ed but
    be unusable afterwards.

Thanks to Joel N. [email protected],
Matt Smith [email protected] and George [email protected]
on the [email protected] mailing list for their
feedback and testing for this release.