Commits on Mar 26, 2012
  1. unicorn 4.2.1 - minor fix and doc updates

    Eric Wong committed Mar 26, 2012
    * Stale pid files are detected if a pid is recycled by processes
      belonging to another user, thanks to Graham Bleach.
    * nginx example config updates thanks to to Eike Herzbach.
    * KNOWN_ISSUES now documents issues with apps/libs that install
      conflicting signal handlers.
Commits on Mar 24, 2012
  1. tests: depend on kgio 2.7.4

    Eric Wong committed Mar 24, 2012
    This latest version of kgio improves portability to
    FreeBSD-based systems.
Commits on Mar 20, 2012
  1. log EPERM errors from invalid pid files

    Eric Wong committed Mar 20, 2012
    In some cases, EPERM may indicate a real configuration problem,
    but it can also just mean the pid file is stale.
  2. KNOWN_ISSUES: document signal conflicts in libs/apps

    Eric Wong committed Mar 20, 2012
    Jeffrey Yeung confirmed this issue on the mailing list.
    ref: <>
  3. examples/nginx.conf: use $scheme instead of hard-coded "https"

    Eric Wong committed Mar 20, 2012
    This adds a little more flexibility to the nginx config,
    especially as protocols (e.g. SPDY) become more prevalent.
    Suggested-by: Eike Herzbach <>
  4. examples/nginx.conf: remove redundant word

    Eric Wong committed Mar 20, 2012
    From: Eike Herzbach <>
Commits on Feb 29, 2012
  1. Start the server if another user has a PID matching our stale pidfile.

    bleach committed with Eric Wong Feb 29, 2012
    If unicorn doesn't get terminated cleanly (for example if the machine
    has its power interrupted) and the pid in the pidfile gets used by
    another process, the current unicorn code will exit and not start a
    server. This tiny patch fixes that behaviour.
    Acked-by: Eric Wong <>
Commits on Jan 28, 2012
  1. unicorn 4.2.0

    Eric Wong committed Jan 28, 2012
    The GPLv3 is now an option to the Unicorn license.  The existing GPLv2
    and Ruby-only terms will always remain options, but the GPLv3 is
    Daemonization is correctly detected on all terminals for development
    use (Brian P O'Rourke).
    Unicorn::OobGC respects applications that disable GC entirely
    during application dispatch (Yuichi Tateno).
    Many test fixes for OpenBSD, which may help other *BSDs, too.
    (Jeremy Evans).
    There is now _optional_ SSL support (via the "kgio-monkey"
    RubyGem).  On fast, secure LANs, SSL is only intended for
    detecting data corruption that weak TCP checksums cannot detect.
    Our SSL support is remains unaudited by security experts.
    There are also some minor bugfixes and documentation
    Ruby 2.0.0dev also has a copy-on-write friendly GC which can save memory
    when combined with "preload_app true", so if you're in the mood, start
    testing Unicorn with the latest Ruby!
  2. doc: update doc for Ruby 2.0.0dev CoW-friendliness

    Eric Wong committed Jan 28, 2012
    Ruby 2.0.0dev is the future and includes a CoW-friendly GC,
    so we shall encourage folks to give Ruby 2.0.0dev a spin.
Commits on Jan 27, 2012
  1. script/isolate_for_tests: disable sqlite3-ruby for Ruby 2.0.0dev

    Eric Wong committed Jan 27, 2012
    We don't need it because we don't test old Rails with bleeding edge Ruby.
  2. disable old Rails tests for Ruby 2.0.0

    Eric Wong committed Jan 27, 2012
    I doubt anybody would attempt to run ancient, unsupported versions
    of Rails on the latest (unreleased, even) versions of Ruby...
  3. script/isolate_for_tests: update to kgio 2.7.2

    Eric Wong committed Jan 27, 2012
    Again, we test with the latest version.
Commits on Jan 24, 2012
  1. update tests for Rack 1.4.1

    Eric Wong committed Jan 24, 2012
    Trying to ensure things always work with the latest version.
Commits on Jan 8, 2012
  1. Rakefile: swap URL for

    Eric Wong committed Jan 8, 2012
Commits on Dec 28, 2011
  1. update tests for rack 1.4.0

    Eric Wong committed Dec 28, 2011
    It's the latest and greatest version, so ensure everything
    works with it.
Commits on Dec 17, 2011
  1. http: test case for "Connection: TE"

    Eric Wong committed Dec 17, 2011
    We need to be sure we don't barf on this header.
Commits on Dec 13, 2011
  1. cleanup exception handling on SIGUSR1

    Eric Wong committed Dec 13, 2011
    No need to duplicate logic here
  2. quiet possible IOError from SIGUSR1 (reopen logs)

    Eric Wong committed Dec 13, 2011
    It's possible for a SIGUSR1 signal to be received in the
    worker immediately before calling  In that case,
    do not clutter logging with IOError and just process the
    reopen log request.
Commits on Dec 5, 2011
  1. socket_helper: fix grammerr fail

    Eric Wong committed Dec 5, 2011
    Oops :x
  2. socket_helper: set SO_KEEPALIVE on TCP sockets

    Eric Wong committed Dec 5, 2011
    Even LANs can break or be unreliable sometimes and socket
    disconnect messages get lost, which means we fall back to
    the global (kill -9) timeout in Unicorn.
    While the default global timeout is much shorter (60s) than
    typical TCP timeouts, some HTTP application dispatches take much
    I/O or computational time (streaming many gigabytes), so the
    global timeout becomes ineffective.
    Under Linux, sysadmins are encouraged to lower the default
    net.ipv4.tcp_keepalive_* knobs in sysctl.  There should be
    similar knobs in other operating systems (the default keepalive
    intervals are usually ridiculously high, too high for anything).
    When the listen socket has SO_KEEPALIVE set, the flag should be
    inherited by accept()-ed sockets.
  3. socket_helper: remove out-of-date comment for TCP_NODELAY

    Eric Wong committed Dec 5, 2011
    We favor low latency and consistency with the Unix socket
    behavior even with TCP.
  4. bump dependencies

    Eric Wong committed Dec 5, 2011
    We should always be testing with the newest available versions
    to watch for incompatibilities, even if we don't /require/ the
    latest ones to run.
Commits on Nov 16, 2011
  1. tests: try to set a shorter path for Unix domain sockets

    Eric Wong committed Nov 16, 2011
    We're only allowed 108 bytes for Unix domain sockets.
    mktemp(1) usually generates path names of reasonable length
    and we rely on it anyways.
Commits on Nov 15, 2011
  1. tests: just use the sha1sum implemented in Ruby

    Eric Wong committed Nov 15, 2011
    The output of SHA1 command-line tools is too unstable and
    I'm more comfortable with Ruby 1.9 encoding support than
    I was in 2009.
    Jeremy Evans noted the output of "openssl sha1" has
    changed since I last used it.
  2. test_helper: ensure test client connects to valid address

    Jeremy Evans committed with Eric Wong Nov 15, 2011
    You can listen on, but trying to connect to it doesn't work
    well on OpenBSD.
    Acked-by: Eric Wong <>
  3. t0011: fix test under OpenBSD

    Jeremy Evans committed with Eric Wong Nov 15, 2011
    expr on OpenBSD uses a basic regular expression (according to
    re_format(7)), which doesn't support +, only *.
    Acked-by: Eric Wong <>
  4. configurator: limit timeout to 30 days

    Eric Wong committed Nov 15, 2011
    There's no practical difference between a timeout of 30 days and
    68 years from an HTTP server standpoint.
    POSIX limits us to 31 days, actually, but there could be
    rounding error with floats used in Ruby time calculations and
    there's no real difference between 30 and 31 days, either...
    Thanks to Jeremy Evans for pointing out large values will throw
    EINVAL (on select(2) under OpenBSD with Ruby 1.9.3 and
    RangeError on older Rubies.
  5. t: ensure SSL certificates exist on fresh test

    Eric Wong committed Nov 15, 2011
    We throw up some fake SSL certs for testing
Commits on Oct 4, 2011
  1. OobGC: force GC.start

    hotchpotch committed with Eric Wong Oct 3, 2011
    [ew: we need to explicitly enable GC if it is disabled
     and respect applications that disable GC]
    Acked-by: Eric Wong <>
Commits on Sep 15, 2011
  1. add preliminary SSL support

    Eric Wong committed Sep 7, 2011
    This will also be the foundation of SSL support in Rainbows!
    and Zbatery.  Some users may also want to use this in
    Unicorn on LANs to meet certain security/auditing requirements.
    Of course, Nightmare! (in whatever form) should also be able to
    use it.
  2. Detect daemonization via configuration.

    bpo committed with Eric Wong Sep 14, 2011
    This prevents the stopping of all workers by SIGWINCH if you're
    using a windowing system that will 'exec' unicorn from a process
    that's already in a process group.
    Acked-by: Eric Wong <>
Commits on Sep 9, 2011
  1. Links: add a link to the UnXF middleware

    Eric Wong committed Sep 9, 2011
    Since unicorn is designed to be deployed behind nginx (or
    similar), X-Forwarded-* headers are common and Rack applications
    may blindly trust spoofed X-Forwarded-* headers.  UnXF provides
    a central place for managing that trust by using rpatricia.
  2. http_server: update comment on tick == 0

    Eric Wong committed Sep 9, 2011
    The old comment was confusing.  We only zero the tick counter
    when forking because application loading can take a long time.
    Otherwise, it's always updated.
Commits on Sep 3, 2011
  1. http_server: a few more things eligible for GC in worker

    Eric Wong committed Sep 2, 2011
    There is no need to keep extra hashes or Proc objects around in
    the heap.
Commits on Aug 29, 2011
  1. add GPLv3 option to the license

    Eric Wong committed Aug 29, 2011
    Existing license terms (Ruby-specific) and GPLv2 remain
    in place, but GPLv3 is preferred as it helps with
    distribution of AGPLv3 code and is explicitly compatible
    with Apache License (v2.0).
    Many more reasons are documented by the FSF: