Class Index

ChangeLog from bogomips.org/clogger.git

commit 7cff94a7ce127765e7ce1ce75a92f29e3a15e604
Author: Eric Wong <normalperson@yhbt.net>
Date:   Tue Nov 6 02:58:33 2012 +0000

    clogger 1.2.0 - small bug and compatibility fixes

    This release enables the optional C extension on MRI Ruby 2.0.0
    (and any other platform that builds C extensions).

    For rare setups which do not specify a :logger or :path
    parameter for Clogger#initialize, we are now Rack::Lint
    compliant and call #write on env["rack.errors"] instead
    of "<<"

commit 31da4fee4f05cf3ba0359ae11c622440c01ff90b
Author: Eric Wong <normalperson@yhbt.net>
Date:   Tue Nov 6 02:57:07 2012 +0000

    ext: enable C extension under Ruby 2.0.0

    Ruby 2.0.0preview1 is out, and we happen to be compatible
    (with some harmless linker/build warnings)

commit 9aebe2b94197aa2ad653ea971cb8f06e14c065fa
Author: Eric Wong <normalperson@yhbt.net>
Date:   Tue Nov 6 02:56:19 2012 +0000

    test_clogger: fix Ruby 1.8 test compatibility

    1.8 did not support my preferred way of writing hashes
    with symbol keys.

commit aaf1279e3e73e301b8f65b651933ebe287b82b4d
Author: Eric Wong <normalperson@yhbt.net>
Date:   Fri Nov 2 20:09:28 2012 -0700

    avoid calling "<<" on env["rack.errors"]

    Rack::Lint::ErrorWrapper forbids the "<<" method.  This
    fallback only comes into play when no log destination
    (via :logger or :path) is specified and is rarely an
    issue in real setups.

commit 4bcd56a4f02b8a167d28505182cc6ff723fb027c
Author: Eric Wong <normalperson@yhbt.net>
Date:   Fri Jun 8 15:47:22 2012 -0700

    README: update for Ruby 1.9.3 support status

    It never /not/ worked under 1.9.3, but we should keep the
    website up-to-date.

commit e1bed92891f7db5c2d24040778fe31f76d723efe
Author: Eric Wong <normalperson@yhbt.net>
Date:   Fri Jun 8 15:37:38 2012 -0700

    test case to simulate Rack::BodyProxy usage pattern

    The use of Rack::BodyProxy#method_missing causes failures
    under mainline Ruby 1.9.2 and 1.9.1, but not 1.9.3.   This
    test case exists to document this (now-fixed) bug for users
    stuck on older Rubies.

    On a side note, our usage of rb_iterate() should be rewritten
    to use rb_block_call() as rb_iterate() is deprecated in 1.9.

    A Ruby 1.9.2-p290 user privately reported this issue.

commit eaa531a0e014aa8e4318e11b793f8665ce1509d0
Author: Eric Wong <normalperson@yhbt.net>
Date:   Tue May 8 12:17:57 2012 -0700

    README: updated to use concise format syntax

    It's easier-to-read with the concise syntax.

commit b772e23294d82dd0982ed60ae95eab8bfaa8c6bf
Author: Eric Wong <normalperson@yhbt.net>
Date:   Tue Dec 6 03:47:36 2011 +0000

    pkg.mk update

commit a1c4506c011b071a9aef0145827b51ffe4d5cd60
Author: Eric Wong <normalperson@yhbt.net>
Date:   Mon Dec 5 18:52:21 2011 -0800

    clogger 1.1.0 - more escaping!

    This release fixes potential vulnerabilities when escape
    sequences are viewed in certain terminals.

    The 0x7F-0xFF byte range is escaped to match behavior of nginx
    1.0.9+, as some character sets may have escape characters in
    that range.

    $cookie_* values are now escaped to be consistent with the
    behavior of the $http_cookie value.  All users of $cookie_* in
    their log format must upgrade (of course there may be no
    Clogger users other than myself, and I don't use $cookie_*)

commit 3a47f23e74a681339f74b21b94241dcfe9542472
Author: Eric Wong <normalperson@yhbt.net>
Date:   Mon Dec 5 17:59:40 2011 -0800

    escape individual cookie values from $cookie_*

    These values are untrusted, so if any client sends them to us
    we must escape them.

commit ba72b12030864a05fc88bc94a3b699971cc70b0a
Author: Eric Wong <normalperson@yhbt.net>
Date:   Mon Dec 5 17:53:43 2011 -0800

    escape bytes in the 0x7F-0xFF range, too

    This matches the behavior of nginx 1.0.9

commit 9f6aece724a79d5a19723a781766fdb1725ddcf3
Author: Eric Wong <normalperson@yhbt.net>
Date:   Fri Jul 22 09:49:22 2011 -0700

    use librelist.org for mailing list address

    It's clearer that we have zero commercial intent
    when using a non-profit .org domain for the mailing
    list.

commit 99d9141f5d57e286c8205b13c41dde34b4bca16d
Author: Eric Wong <normalperson@yhbt.net>
Date:   Wed Jul 20 14:01:56 2011 -0700

    ext: note we rely on GVL for reentrancy detection

    Nothing wrong with the GVL in Ruby 1.9.3; but we'll need
    to modify our code if it's removed for C extensions.

commit d6328a6f31f97bded75a4e2aba73f85366215924
Author: Eric Wong <normalperson@yhbt.net>
Date:   Wed Jun 22 14:43:16 2011 -0700

    clogger 1.0.1 - portability fixes

    Minor portability fixes noticed on some systems.

    There is a minor license change, it is now explicitly LGPLv2.1
    and LGPLv3 and later versions at the project leader's
    discretion.  It is no longer LGPLv2.1+, so it doesn't give a
    blank check to the FSF to change the license on us.

commit 7e3694c6de13fc3d635473d3150412cbda287e75
Author: Eric Wong <normalperson@yhbt.net>
Date:   Wed Jun 22 13:55:25 2011 -0700

    ext: fix portability defines for some installs

    Some Ruby installs muck up headers/#defines and cause weirdness.
    We now explicitly define _BSD_SOURCE and include #stdio.h

commit 5979a9b113815721140058d021ecfffc5c529de4
Author: Eric Wong <normalperson@yhbt.net>
Date:   Wed May 11 18:54:47 2011 -0700

    tests: add full URL example

    Could be useful for some folks.

commit bcb9fb819a8753863952302d71215152cc715935
Author: Eric Wong <normalperson@yhbt.net>
Date:   Tue Apr 26 16:24:18 2011 -0700

    change from LGPLv2.1+ to LGPLv2.1 + LGPLv3

    LGPLv4 could be completely different, so we won't give
    the FSF a blank check to force it upon us.

commit edd2bd2b3baa9cca40dcd8717b338076f09d0807
Author: Eric Wong <normalperson@yhbt.net>
Date:   Thu Apr 21 04:02:57 2011 +0000

    clogger 1.0.0 - \o/

    * $time_iso8601 added for nginx compatibility
    * $time_local (without strftime-options) is now locale-independent

    There's also a minor usability tweak that allows Symbols to be
    specified as the :format argument, so config.ru can be shortened:

    before (continues to work with 1.0.0):

     use Clogger, :format => Clogger::Format::Rack_1_0

    after:

     use Clogger, :format => :Rack_1_0

commit b7459a293c1b3efe3f5be4201620af885bb8122e
Author: Eric Wong <normalperson@yhbt.net>
Date:   Tue Apr 19 00:33:48 2011 +0000

    README: stop promoting strftime()-compatible formats

    strftime() isn't locale-independent, so it can lead to
    inconsistencies in logs.

commit 0a2cb5093f7fbba370fd9b6caaf308139220b47b
Author: Eric Wong <normalperson@yhbt.net>
Date:   Tue Apr 19 00:28:08 2011 +0000

    $time_local and $time_utc are locale-independent

    This doesn't apply to people that use strftime()-formats,
    but that's a minority.

commit 8303d477a13a63e6b28666e04b0c62886feae48e
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sat Apr 16 02:03:34 2011 +0000

    add support for $time_iso8601 format

    This appeared in nginx 0.9.6

commit a84b132f51bd011f3c3441c28d23ff9c1029a9f8
Author: Eric Wong <normalperson@yhbt.net>
Date:   Mon Mar 21 14:10:07 2011 -0700

    extconf: unnecessary dir_config statement

    Braindamage from back in the day when I didn't understand mkmf

commit b086541910c5797732886c7f0d276871f2775d08
Author: Eric Wong <normalperson@yhbt.net>
Date:   Wed Mar 16 16:35:40 2011 -0700

    :format may be a Symbol for less typing

    This allows using:

      use Clogger, :format => :Rack_1_0

    Instead of:

      use Clogger, :format => Clogger::Format::Rack_1_0

commit 9102cb13084980f1899b488627b354fc16bc38eb
Author: Eric Wong <normalperson@yhbt.net>
Date:   Wed Mar 16 14:56:19 2011 -0700

    fix documentation of Clogger.new for :path

    Oops

commit 21be17fd1307e1e194a3089f0e3317a5948088e7
Author: Eric Wong <normalperson@yhbt.net>
Date:   Tue Mar 15 19:21:02 2011 +0000

    README: misspelled "discusssion"

commit af8a20dedc47ab001fbe5072d40967c4cf8545ea
Author: Eric Wong <normalperson@yhbt.net>
Date:   Tue Mar 15 11:51:28 2011 +0000

    clogger 0.9.0 - configurable logging for Rack

    Under 1.9, we always release the GVL for filesystem operations
    now to avoid worst case scenarios.  This may hurt performance
    for some folks with bad locking implementations and extremely
    fast filesystems.  A couple of minor cleanups, too.

commit 60cde0ff6147211ae09178bb62a82374241514e0
Author: Eric Wong <normalperson@yhbt.net>
Date:   Tue Mar 15 11:49:54 2011 +0000

    clogger: remove VERSION constant

    People shouldn't care, there have been no backwards-incompatible
    changes in the UI and we're not a library people write code
    against.

commit 00864a06a860c31f0b139a543f07d94dd37c8a59
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sun Mar 13 09:54:37 2011 +0000

    avoid potential RString -> C-string conversions

    Unlikely, but it may make a difference somewhere...

commit bd8334f5f3e901a3d54d3421dffb0db8efa024a9
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sun Mar 13 09:48:18 2011 +0000

    release GVL for filesystem operations

    While local filesystems are usually very fast, we are
    pessimistic and should prepare for worst-case scenarios.  This
    can use rb_thread_io_blocking_region() under Ruby 1.9.3dev.

commit c55831a01dab548fdf9eccb7529396f6582c6637
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sun Mar 13 09:43:50 2011 +0000

    ext: ensure path is a valid C string

    Unlikely, but some app could pass '\0' into us

commit ecd7877787a156e476e31b7108e7b9f15f7523d8
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sun Mar 13 06:03:57 2011 +0000

    update pkg.mk

commit 3f1832a9bb149cb189371357d06000917b6098eb
Author: Eric Wong <normalperson@yhbt.net>
Date:   Fri Mar 4 09:20:38 2011 +0000

    doc: bogomips.org URL diet

    Old git URLs still work, but new ones are shorter

commit 3c94498e18ca0f62bf62e5f3d844383b7417cc1c
Author: Eric Wong <normalperson@yhbt.net>
Date:   Fri Mar 4 09:12:49 2011 +0000

    ext: avoid potentially unsafe casts with C API

    Rubinius may be pickier about what a VALUE is, so we can't
    safely cast any C address into VALUEs.

commit c2e6c1635c55bfd23470bd30878596245a5d25b0
Author: Eric Wong <e@yhbt.net>
Date:   Thu Jan 27 06:18:35 2011 +0000

    pkg.mk: update in case we get rid of C ext

commit 1281d0b3cb5758d524af7e9f67094bcf936570b7
Author: Eric Wong <normalperson@yhbt.net>
Date:   Fri Jan 21 09:07:52 2011 +0000

    clogger 0.8.0 - delegating away!

    Clogger now delegates all unknown methods to the response body
    in cases where it needs to wrap the response body.  This allows
    apps that use non-standard Rack extensions to continue working.

    Eric Wong (4):
          pass along "to_io" calls to the body
          delegate method_missing calls to the response body
          pure: simpler autoload trigger
          switch to pkg.mk for maintenance tasks

commit abb753d65398e96c29ce6a66069b0f8f1cc2a384
Author: Eric Wong <normalperson@yhbt.net>
Date:   Fri Jan 21 09:05:25 2011 +0000

    switch to pkg.mk for maintenance tasks

    I like make :D

commit fae26b8e56f6b6e4c6d75f8faa8570ee209ef757
Author: Eric Wong <normalperson@yhbt.net>
Date:   Fri Jan 21 09:04:39 2011 +0000

    pure: simpler autoload trigger

    No need to actually create the hash, just load the constant

commit 2c43727f8e689ef5998d773feb4cbb2f58009391
Author: Eric Wong <normalperson@yhbt.net>
Date:   Fri Jan 21 08:53:56 2011 +0000

    delegate method_missing calls to the response body

    Since we delegated response_to?, we also need to delegate
    method_missing to the response body in case there are
    non-standard methods defined outside of Rack.

commit d3a182dd0238c964ff5191642d53fce3d2e64be9
Author: Eric Wong <normalperson@yhbt.net>
Date:   Fri Jan 21 08:53:55 2011 +0000

    pass along "to_io" calls to the body

    This optimization is used by Rainbows! to pass IO objects
    to the response body.

commit 0abc76611fe3438dd5b152257f9ba9028c536ed3
Author: Eric Wong <normalperson@yhbt.net>
Date:   Fri Jan 14 14:43:17 2011 -0800

    clogger 0.7.0 - portability improvements, cleanups

    Broken/crazy systems without CLOCK_MONOTONIC (in varying
    degrees) and/or clock_gettime() should be supported by
    using gettimeofday().  Thanks to Lawrence Pit for reporting
    and helping us test.

    The Clogger::ToPath proxy class is gone, Clogger itself can
    proxy to_path/close calls correctly to the response body.

    $time_utc with a default strftime-format is now supported, and
    time formats can now be arbitrarily long in the C extension.

commit 5580514d1b291217ccfd62f2f1b06f64aa3906ef
Author: Eric Wong <normalperson@yhbt.net>
Date:   Fri Jan 14 16:30:38 2011 -0800

    properly support $time_utc as documented

    nginx doesn't have this, only time_local, but we do

commit 916e7f09c56ff0ab6722c4cce5e78d71ec336d48
Author: Eric Wong <normalperson@yhbt.net>
Date:   Fri Jan 14 16:20:40 2011 -0800

    handle abitrarily long time formats in C extension

    In case some folks need to use insanely long time formats,
    we'll support them.

commit fd00bf25c8da9a04952b14bceb7e64420caf9bdb
Author: Eric Wong <normalperson@yhbt.net>
Date:   Fri Jan 14 14:21:41 2011 -0800

    RDoc fixups

    call-seq is needed to make C functions look good

commit f61187d870c580b6411d025ac1850cc3e5f2eb6a
Author: Eric Wong <normalperson@yhbt.net>
Date:   Fri Jan 14 14:13:38 2011 -0800

    remove dead RSTRUCT* compatibility macros

    The Clogger::ToPath proxy struct class is gone and
    so is our need to access it.

commit e4f738709482d95e49552f7ddfda800e1b4a6baf
Author: Eric Wong <normalperson@yhbt.net>
Date:   Fri Jan 14 13:59:15 2011 -0800

    remove Clogger::ToPath proxy class

    We can just make Clogger#respond_to? smarter and forward
    everything except :close to the body we're proxying.

commit 63521b4c70a1aff89049abf2ba224114e97f62ac
Author: Eric Wong <normalperson@yhbt.net>
Date:   Fri Jan 14 13:24:58 2011 -0800

    test_clogger_to_path: do not assume implementation details

    We'll be getting rid of an unnecessary wrapper class

commit b48017f818e13f8c7ddb555f8fe5fa895521af7a
Author: Eric Wong <normalperson@yhbt.net>
Date:   Fri Jan 14 17:26:59 2011 +0000

    another try to fix systems without CLOCK_MONOTONIC

    Fix a reversed typedef and also deal with the case where
    CLOCK_MONOTONIC is a function call and not a constant
    macro.

commit cc43cfbb418ab7b4b2786123d33ede23b3cb5ea3
Author: Eric Wong <normalperson@yhbt.net>
Date:   Fri Jan 14 09:07:57 2011 +0000

    another workaround for systems with broken CLOCK_MONOTONIC

    This should also detect cases where CLOCK_MONOTONIC is
    available at build but not at runtime.

commit 6cc7e96f972d9a648bef9d49ca245282250a5502
Author: Eric Wong <normalperson@yhbt.net>
Date:   Wed Jan 12 16:24:23 2011 -0800

    attempt to support broken/crazy systems

    clock_gettime() is not available on some systems and/or
    CLOCK_MONOTONIC.  This is totally broken considering the
    POSIX standard was 10 years ago, now.

    Nothing in gnulib, either, wtf?!
     http://www.gnu.org/software/gnulib/manual/html_node/clock_005fgettime.html

commit eeae500effcddece4e9186d7b647253c48b8a3a7
Author: Eric Wong <normalperson@yhbt.net>
Date:   Wed Jan 12 16:04:34 2011 -0800

    remove unused function (obj_fileno)

commit f132c6baa33496515743de1a31854d169479518d
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sun Dec 26 01:21:33 2010 +0000

    release: publish_news runs by default

    It's interactive and sucks less, now.

commit a4b13f3e1376b539a1b7b7cbfeb9e38f6de2b289
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sat Dec 25 09:34:01 2010 +0000

    README: updates

    Remove unnecessary "DESCRIPTION" header, also added note
    about Rubinius support.

commit 04ac0bbb1a7eb6d36d80a33e5798c7bbd62455ef
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sat Dec 25 00:59:58 2010 -0800

    clogger 0.6.0 - :path shortcut, minor bugfixes

    Clogger may now be initialized with a :path instead of :logger
    to avoid typing "::File" in config.ru files to avoid conflicting
    with the completely-unrelated Rack::File.

    $request_time is now uses the monotonic clock, making it immune
    to system clock changes.  $usec and $msec statements were
    completely broken in the pure-Ruby code and now fixed.

    Rubinius is supported by the optional C extension as well,
    the pure-Ruby code always worked.

commit 8492f6bbc56d42e3068f25ca233faa78884d5a77
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sat Dec 25 01:27:33 2010 -0800

    fix $msec and $usec in pure Ruby variant

    It was totally broken but nobody uses uses it, so it
    went unnoticed since the beginning of time.

commit 66a5374e724612cd16f270f43102a6ed347208d7
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sat Dec 25 00:58:03 2010 -0800

    add support for Rubinius

    RSTRUCT_PTR access is unlikely to ever happen for Rubinius,
    so we'll just make a method dispatch and leave the faster
    code for Ruby 1.8 and 1.9.

commit cd91b34636caabb3a1a7cee38f5b84e91eaf62b8
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sat Dec 25 00:47:17 2010 -0800

    GNUmakefile: better external RUBYLIB support

    Duh!

commit 6720cdda4b890ac42806a8fe290f96449a150c6a
Author: Eric Wong <normalperson@yhbt.net>
Date:   Fri Dec 24 16:48:50 2010 -0800

    eliminate unnecessary freeze and dup

    They're not needed and a waste of code.

commit 54cf500266b35beecb9c30b8252e72af9fafbc3e
Author: Eric Wong <normalperson@yhbt.net>
Date:   Fri Dec 24 16:32:28 2010 -0800

    doc: switch to wrongdoc for documentation

    wrongdoc eliminates JavaScript from our website and also
    enables us to cut down on our management scripts/code for
    supporting the project.

commit c77066dd3c93d88ab91653244d36e51dc53e60d2
Author: Eric Wong <normalperson@yhbt.net>
Date:   Fri Dec 24 16:16:27 2010 -0800

    GNUmakefile: preserve RUBYLIB env for tests

commit fb001a2a1e1037597804db458a28316599fc6e83
Author: Eric Wong <e+absinthe@yhbt.net>
Date:   Fri Dec 24 16:14:58 2010 -0800

    fix #include ordering under FreeBSD 7.2

    ruby.h doesn't seem to like being included after time.h

commit 2816f3ceaa31452f6bb67a7a7297e6795221cb35
Author: Eric Wong <normalperson@yhbt.net>
Date:   Fri Dec 24 15:41:53 2010 -0800

    use clock_gettime for time resolution

    This lets us use CLOCK_MONOTONIC so we are not affected by
    system clock changes.

    We still convert to microseconds instead of nanoseconds for
    (pure)-Ruby 1.8 code compatibility.  There is also little need
    for nanosecond timer resolution in log files (microsecond is not
    needed, even).

commit 9b46379f75f384c86e42046ab03ce55231197c92
Author: Eric Wong <normalperson@yhbt.net>
Date:   Fri Dec 24 13:23:32 2010 -0800

    accept a new :path argument in initialize

    This lessens confusion for people configuring Clogger in
    config.ru, since "File" could be mistaken for Rack::File
    and "::File" needs to be specified.

commit 8d58b42d0255880d732ba0700597b312a8219f8f
Author: Eric Wong <normalperson@yhbt.net>
Date:   Fri Dec 24 13:17:37 2010 -0800

    GNUmakefile: fix running of extension test

    Oops

commit fc58e747835f05a64cf3c4625d6a51baa4bc8369
Author: Eric Wong <normalperson@yhbt.net>
Date:   Tue Oct 5 14:24:11 2010 -0700

    GNUmakefile: use portable tar invocation

    We've been spoiled by GNU tar.

commit 0a13fccf2e9c285baf6d7ebfedb004e496dd976d
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sun Jun 6 08:15:14 2010 +0000

    README: Rack 1.1 is out (and has been for a while)

commit f60c24e1fd49b6f3876f90a43a886c18d7fe743d
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sun Jun 6 07:50:51 2010 +0000

    clogger 0.5.0 - body.to_path forwarding

    This release allows middleware like Rack::Contrib::Sendfile to
    work properly higher up the stack from Clogger.

    Certain configurations of the Rainbows! and Zbatery web servers
    are able to use the return value of body.to_path to serve static
    files efficiently (via IO.copy_stream under 1.9 or
    stream_file_data with EventMachine).

    There are some small cleanups and documentation improvements
    as well.

    I've relicensed to LGPLv2.1+ (from LGPLv3-only) to allow
    bundling with GPLv2-only applications (I'm currently the sole
    copyright holder).

    Signed-off-by: Eric Wong <normalperson@yhbt.net>

commit 86699fa42105c48e7d4c3cf6e16cca4417bf0a06
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sun Jun 6 07:46:25 2010 +0000

    README: document CLOGGER_PURE environment variable

    There may also be some MRI users uncomfortable running C
    extensions.

commit fac515bf384d1cb8fe30a310bb38904b1dc74f58
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sun Jun 6 07:42:56 2010 +0000

    CLOGGER_PURE=0 disables the C ext

    It's unintuitive that merely setting the environment variable to
    an empty string or zero would be a boolean true.

commit 009760bdb7ba08246b98f4befe856cbda2ce769a
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sun Jun 6 07:37:13 2010 +0000

    ext: comment why we do what we do in to_path

commit 41debb52b9d719dbb6f3ee7963de8913eff0c13d
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sun Jun 6 07:34:09 2010 +0000

    ext: the N in /dev/fd/N must be unsigned

    There's no way in hell a valid file descriptor can have
    a negative number attached to it.

commit cd76457a8eec40a0de8cb2bc779c5bfb08b9d7b3
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sun Jun 6 07:19:55 2010 +0000

    ext: handle weird regular files with O_NONBLOCK set

    Sometimes programmers can blindly set O_NONBLOCK on everything
    in sight.  However, O_NONBLOCK has no effect on regular files,
    so ignore it and allow the raw file descriptor to be used.

commit 8794037db3e88fc03d8bc33d603a0b39a69ddf97
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sun Jun 6 07:17:09 2010 +0000

    ext: cleanup -Wshadow warning

commit 0de4a3d46d15ee5097f4a9cfd46363b5f720ae39
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sun Jun 6 07:02:00 2010 +0000

    no point in using autoload for Rack

    Rack is always used, and Rack itself uses autoload to
    save memory.

commit f4dd93733793baadd859ba1197814c3a19f232b4
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sun Jun 6 07:01:23 2010 +0000

    gemspec: update test files

commit 52180f527a3711f590b369499c1bd83a19b88187
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sun Jun 6 06:58:12 2010 +0000

    relicense as LGPLv2.1 or later (from LGPLv3)

    This allows GPLv2-only programs to bundle us.

    Signed-off-by: Eric Wong <normalperson@yhbt.net>

commit e3dfea56ec8f189711f7904a9a05dbbfc0bd6acc
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sun Jun 6 06:47:02 2010 +0000

    doc: RDoc cleanups, split out LICENSE file

commit b895d3d0393a647d3602783bc53bf68e223e51c9
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sun Jun 6 05:17:14 2010 +0000

    pass-through body.to_path when wrapping the body

    Certain configurations of Rainbows! (and Zbatery) are able to
    use the return value of body.to_path to serve static files
    more efficiently.

    This also allows middleware like Rack::Contrib::Sendfile to
    work properly higher up the stack, too.

commit bc1d1df38d7803ce9fdae05fc5129051eeed89e0
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sun Jun 6 00:43:34 2010 +0000

    when wrapping the body, body.close writes the log

    We no longer write the log out at the end of the body.each call.
    This is a behavioral change, but fortunately all Rack servers
    I've seen call body.close inside an ensure.

    This allows us to later pass along the "to_path" method
    and not rely on "each" to write the log.

commit e4c3548e8ff4c95c697b4a30699e6f655d60f188
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sat Jun 5 20:57:17 2010 +0000

    GNUmakefile: allow multiple tests to run in parallel

commit 111e5ac0bf12021a2b8cf9145df59312f1f96992
Author: Eric Wong <normalperson@yhbt.net>
Date:   Wed Apr 21 16:53:43 2010 -0700

    clogger 0.4.0

    Small cleanups and minor enhancements (mainly for the optional
    C extension) for this release:

    Eric Wong (10):
          ext: use FIX macros instead of generic NUM macros if possible
          ext: preserve subclasses of Rack::Utils::HeaderHash
          test: fix Linux memory usage test
          avoid direct require of "rack" to quiet warnings
          ext: GC safety fix when throwing an exception
          ext: eliminate unused variable
          ext: fix signedness and shadow warnings
          ext: sparse cleanups
          ext: avoid void pointer arithmetic
          clogger 0.4.0

commit 380e547ba406c00130304ce0cab4fa289e3f2957
Author: Eric Wong <normalperson@yhbt.net>
Date:   Wed Apr 21 16:52:27 2010 -0700

    ext: avoid void pointer arithmetic

    default CFLAGS for 1.9.2dev complains

commit 23628403c9dc58925e5db2abb9ed9425a4208325
Author: Eric Wong <normalperson@yhbt.net>
Date:   Wed Apr 21 16:48:48 2010 -0700

    ext: sparse cleanups

commit c353b5bf62ea500fda8cc7799d1645f9b0c28697
Author: Eric Wong <normalperson@yhbt.net>
Date:   Wed Apr 21 16:35:36 2010 -0700

    ext: fix signedness and shadow warnings

    These were (fortunately) harmless, but better safe than
    sorry.

commit c16263dc9ff6230bd148e39431e9c5e059a674a7
Author: Eric Wong <normalperson@yhbt.net>
Date:   Wed Apr 21 16:31:33 2010 -0700

    ext: eliminate unused variable

commit e142f2c5db4427be70d10d7e1316e139d08a7c3e
Author: Eric Wong <normalperson@yhbt.net>
Date:   Wed Apr 21 16:29:56 2010 -0700

    ext: GC safety fix when throwing an exception

    The return value of rb_inspect() may not be visible
    on the stack without assigning it to a local variable
    first.

commit a0ee3ba2d08acb423a1cbc4a5ae862bd40c4b914
Author: Eric Wong <normalperson@yhbt.net>
Date:   Wed Apr 21 15:31:58 2010 -0700

    avoid direct require of "rack" to quiet warnings

    This quiets down warnings when used with RubyGems loaders such
    as Isolate and Bundler where the HTTP server already loaded
    Rack.

commit 9c6fd3814b6bed2772fc540e7824febe85e9b046
Author: Eric Wong <normalperson@yhbt.net>
Date:   Wed Apr 21 15:29:10 2010 -0700

    test: fix Linux memory usage test

commit 0313f0651caf9ef35d320c6049d4f32ace711457
Author: Eric Wong <normalperson@yhbt.net>
Date:   Thu Apr 8 15:12:07 2010 -0700

    ext: preserve subclasses of Rack::Utils::HeaderHash

    some people subclass HeaderHash and want them preserved
    through the middleware stack.

commit 31925d90c3d292d0b5f20524082b7d3dc2e08fcb
Author: Eric Wong <normalperson@yhbt.net>
Date:   Thu Apr 8 14:36:36 2010 -0700

    ext: use FIX macros instead of generic NUM macros if possible

    They're slightly faster when we know a number is small enough
    to be a FIXNUM.

commit 724c1f6a3b42a020199554c809a46ddc4b404659
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sat Feb 13 01:47:12 2010 -0800

    clogger 0.3.2

    This release fixes a memory leak in the optional C extension due to
    misuse of the Ruby C API.  Users of the pure Ruby version are
    unaffected.

    We also misreleased 0.3.1 with this fix, but without bumping the
    Clogger::VERSION constant.

commit 4247fafd0f361d2373df7213a1a0028554e93d93
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sat Feb 13 01:35:55 2010 -0800

    ext: fix memory leak when reentrant/multithreaded

    The optional C extension leaked memory due to improper use of
    the Ruby API, causing duplicated objects to never be garbage
    collected.

    I misread the Data_Make_Struct/Data_Wrap_Struct documentation
    and ended up passing NULL as the "free" argument instead of -1,
    causing the memory to never be freed.

    From README.EXT in the MRI source which I misread:
    > The free argument is the function to free the pointer
    > allocation.  If this is -1, the pointer will be just freed.
    > The functions mark and free will be called from garbage
    > collector.

commit 883368f745af13a57b3784b834001a82823eee05
Author: Eric Wong <normalperson@yhbt.net>
Date:   Tue Feb 9 13:57:17 2010 -0800

    clogger 0.3.0

    You may now force the :reentrant flag to +true+ or +false+ in
    your Rack configuration file:

       use Clogger,
           :format => Clogger::Format::Combined,
           :logger => ::File.open("/path/to/log", "ab"),
           :reentrant => true

    This is to be compatible with Rack servers that do not use use
    events or Fibers for concurrency instead of threads.  By
    default, reentrancy is enabled if env["rack.multithread"] is
    true, but "rack.multithread" cannot indicative of a reentrancy
    requirement in a web server.

commit 616314a2bbc13095b1da9306916c0d414634e555
Author: Eric Wong <normalperson@yhbt.net>
Date:   Mon Feb 8 17:20:30 2010 -0800

    README: update examples for :reentrant

commit 2dd3e22782090dc347429e306569f687fa794d06
Author: Eric Wong <normalperson@yhbt.net>
Date:   Mon Feb 8 17:14:41 2010 -0800

    Allow :reentrant flag to be forced true/false

    Clogger may set this value independently of "rack.multithread"
    since Actor/Fiber-based servers may have multiple instances of
    Clogger wrapping different response bodies and yet be
    incompatible with "rack.multithread"

commit 74ab49d2f02d65fb4d2915563d8b4c4f026e4657
Author: Eric Wong <normalperson@yhbt.net>
Date:   Wed Jan 6 18:09:27 2010 -0800

    Fix minor build system bugs

commit 1df164e28824cf139b38e35d6eb6dbfb088c54a8
Author: Eric Wong <normalperson@yhbt.net>
Date:   Wed Jan 6 17:44:27 2010 -0800

    clogger 0.2.0

    The optional C extension no longer tries to preserve the
    original response array as it could become subtly broken by
    people using non-frozen but constant responses.  For the pure
    Ruby version, there is a 1.9-encoding bugfix for response
    size calculation.

commit 87c742bd385593bfe001dc3247c4a4ae7fc92463
Author: Eric Wong <normalperson@yhbt.net>
Date:   Wed Jan 6 17:41:41 2010 -0800

    pure: use Rack::Utils.bytesize instead of String#size

    hacking the C extension with RSTRING_LEN() is so much easier :P

commit 5d4fd9f41ab57f7297569910c08f7330dd3ec39e
Author: Eric Wong <normalperson@yhbt.net>
Date:   Wed Jan 6 17:37:25 2010 -0800

    pure: avoid unnecessary method dispatches

    instance variable lookups are expensive as-is

commit 30ce68ad7ba0c7467b0369e0a5d6252baa52aae4
Author: Eric Wong <normalperson@yhbt.net>
Date:   Wed Jan 6 17:34:58 2010 -0800

    GNUmakefile: avoid deleting when uploading docs

commit f8f05dc199a0553bbcd03deb990f220d57278cc9
Author: Eric Wong <normalperson@yhbt.net>
Date:   Wed Jan 6 17:32:07 2010 -0800

    Rakefile: raa_update task

commit 684a9d6083a7f95a3010e7a1291df7ab6de0f394
Author: Eric Wong <normalperson@yhbt.net>
Date:   Wed Jan 6 17:27:04 2010 -0800

    README: use ::File in usage examples

    A bare "File" constant may conflict with Rack::File
    when run inside Rack::Builder

commit ab37f2d65b01370ae975346110471f33b10bd178
Author: Eric Wong <normalperson@yhbt.net>
Date:   Wed Jan 6 17:23:13 2010 -0800

    ext: unpack response arrays unconditionally

    It's too crazy to have to special case for frozen response
    constants.  3-element arrays are cheap under Ruby 1.9 anyways.

commit b082327b0363f5236a267abd8a412e18ce9918e0
Author: Eric Wong <normalperson@yhbt.net>
Date:   Wed Jan 6 16:07:38 2010 -0800

    GNUmakefile: NEWS depends on .manifest

commit 6e3977583a4b2932617e5c81bcf1aeb7a2605ddc
Author: Eric Wong <normalperson@yhbt.net>
Date:   Wed Jan 6 16:06:49 2010 -0800

    GNUmakefile: modernize for Gemcutter

    Also uppercase rake/ruby variables

commit 0420598d0007d9d816d55c698ed1f9ac4e206433
Author: Eric Wong <normalperson@yhbt.net>
Date:   Tue Oct 6 13:46:20 2009 -0700

    clogger 0.1.0

    This release should help ensure compatibility with a
    to-be-released version of Rack::Lint that allows subclasses of
    the core String and Hash objects for users of the optional C
    extension.

    Eric Wong (6):
          ext: convert non-Hashes #to_hash if possible
          ext: ensure all objects we byte_xs are Strings
          tests for subclassing
          gemspec: disable the license= field for older RubyGems
          GNUmakefile: fix grammar FAIL in comment
          cleanup packaging and website/rdoc

commit cf543e57efa4b8d81121e712280bb6413719be35
Author: Eric Wong <normalperson@yhbt.net>
Date:   Tue Oct 6 13:24:05 2009 -0700

    cleanup packaging and website/rdoc

commit 1e4b7c3d2fe12e4732ed816ebd75bb7dc81d6151
Author: Eric Wong <normalperson@yhbt.net>
Date:   Tue Oct 6 11:16:43 2009 -0700

    GNUmakefile: fix grammar FAIL in comment

commit cf3be5aca27a82a1f6939cd6383f6b1c0ac0c602
Author: Eric Wong <normalperson@yhbt.net>
Date:   Tue Oct 6 11:12:07 2009 -0700

    gemspec: disable the license= field for older RubyGems

commit 485fe222d304c9a795141532596b0575c3d2e6ea
Author: Eric Wong <normalperson@yhbt.net>
Date:   Tue Oct 6 12:03:11 2009 -0700

    tests for subclassing

    Rack::Lint will be relaxed in the next version to allow
    subclasses of String and Hash objects, so ensure we're
    good to go when the next version of Rack hits.

commit 2ca88db578a4b9143a5dfaa66ce38b9463e7e166
Author: Eric Wong <normalperson@yhbt.net>
Date:   Tue Oct 6 12:03:10 2009 -0700

    ext: ensure all objects we byte_xs are Strings

    Rack will be relaxing the spec to allow subclasses
    of String objects.  Just in case they're not compatible,
    we'll convert them to strings.

commit c4eca8765e9aaf0d2736e764770d72f407affc16
Author: Eric Wong <normalperson@yhbt.net>
Date:   Tue Oct 6 12:03:09 2009 -0700

    ext: convert non-Hashes #to_hash if possible

    This is to remain compatible with Rack if it relaxes
    Rack::Lint to allow subclasses.

commit 162110a29c6b3f4e3698151d83d998f24ed3768a
Author: Eric Wong <normalperson@yhbt.net>
Date:   Wed Sep 9 10:11:29 2009 -0700

    clogger 0.0.7

    We now properly handle bodies that do not respond to the :close
    method.  Additionally there small documentation/formatting
    fixes.

commit 7eb0c4e29e567f02affc202b51eb277cbae43688
Author: Eric Wong <normalperson@yhbt.net>
Date:   Wed Sep 9 10:02:49 2009 -0700

    handle bodies that do not respond to :close

    Since the wrapped Clogger object always responds to
    close, we cannot blindly delegate the close method to
    the body without ensuring it can be closed.  So ensure
    that it can be closed before attempting to close it,
    all return values and errors are trapped and returned.

    Reported-by: Iñaki Baz Castillo

commit 72dfd64ed0ab31ced0f27e8a8a941c555221bb96
Author: Eric Wong <normalperson@yhbt.net>
Date:   Mon Sep 7 19:32:17 2009 -0700

    README: fix some grammar peculiarities

commit 1c19cf0066ac83d2da02f331be65dffacd560c36
Author: Eric Wong <normalperson@yhbt.net>
Date:   Mon Sep 7 19:28:17 2009 -0700

    README: document $status

    Hopefully it was obvious before, if not it is now.

commit 5d77f491c59f79a7727d8699be2aaf12db9d81c6
Author: Eric Wong <normalperson@yhbt.net>
Date:   Mon Sep 7 17:27:18 2009 -0700

    Rakefile: preformatted text for history rdoc

    escaping issues are too painful to deal with

commit 898d31b2ffa0383d62bf28c4fa49bc74aa92fde5
Author: Eric Wong <normalperson@yhbt.net>
Date:   Mon Sep 7 17:25:09 2009 -0700

    Rakefile: Fix history with multi-paragraph tag messages

commit 25faf9f74637db03f0e5e1bcd1785d74d7ff6309
Author: Eric Wong <normalperson@yhbt.net>
Date:   Mon Sep 7 17:24:35 2009 -0700

    gemspec: license is LGPLv3

    Odd, RubyGems doesn't warn about a lack of it and
    I didn't notice this field until now...

commit 4d0226b77b2d053ee677d3101b19fb662b1f10b6
Author: Eric Wong <normalperson@yhbt.net>
Date:   Mon Sep 7 17:19:05 2009 -0700

    GNUmakefile: cleanup release notes generation

commit 6769f9b6615ebe172b3a75f1d11554ada26c592d
Author: Eric Wong <normalperson@yhbt.net>
Date:   Mon Sep 7 16:49:22 2009 -0700

    clogger 0.0.6

    "clogger_ext" is no longer a separate gem, but merged into the
    "clogger" gem itself.  The installation should automatically
    detect compatible versions of Ruby and only build the C
    extension for MRI 1.8/1.9.

    Rack::Utils::HeaderHash is now used for $sent_http_* variable
    lookups instead of a hand-rolled solution.  HeaderHash objects
    should be reusable in Rack soon to avoid the penalty of
    recreating them repeatedly in middlewares and hopefully
    more-widely used as a result.

    Underlying logger objects are sync=true for safety reasons.
    This has always been the case for the C extension version
    when writing to regular files.

    Other small changes include more CGI variables and the :ORS
    (output record separator) option added (default: "\n").

commit 1475c6ce69dab9a6679dc3237be7761afd29e998
Author: Eric Wong <normalperson@yhbt.net>
Date:   Mon Sep 7 16:47:38 2009 -0700

    ext: fix compiler warnings in the cpp "comment"

commit 3547efe6386bb4ad224be49b723d16cde2067f9c
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sat Sep 5 19:33:33 2009 -0700

    Don't bother creating HeaderHash unless we need it

    It's expensive to create if not needed, and no current released
    version of Rack has my proposed optimizations for it yet...

commit 9335d300dbf62e7b8bd140f6388358fe71a62bc0
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sun Sep 6 16:30:39 2009 -0700

    README: note that it's multi-instance-safe

commit 9b1012102ad16fcb27188b6a3ffd299c70ef63e1
Author: Eric Wong <normalperson@yhbt.net>
Date:   Mon Sep 7 16:43:45 2009 -0700

    README: fix links

commit 732325a67ba68060fe18dc66c21134c35f8006ea
Author: Eric Wong <normalperson@yhbt.net>
Date:   Mon Sep 7 16:24:41 2009 -0700

    enable MRI C extension by default

    It was too much confusion to have multiple gems in the mix
    and I mainly use the C extension anyways.

    If we're not on a compatible version of Ruby, the extension will
    just be disabled by generating a dummy no-op Makefile to work
    around it.

commit cee939b527e82237f89eb8eece62610854ac888a
Author: Eric Wong <normalperson@yhbt.net>
Date:   Mon Sep 7 15:49:55 2009 -0700

    Switch to hand-rolled packaging/distro scripts

    Several bikeshed reasons brought me to this point:

    * I like the README.html layout more than any default index.html
      even if it's using README content.  Having links on the side
      helps navigation IMHO.

    * publish_docs preserves timestamps to improve cache hit rate

    * git is used to maintain the manifest at packaging/release-time
      so my changesets have less noise in them

    * git is used to generate history files (from tag messages),
      this is a more DRY approach to me.

    * I don't like the ".txt" suffix being translated to "_txt.html" in
      URLs.  I don't like the ".txt" suffix in general.

    * I don't like Manifest.txt showing up in my RDoc

commit 00814d46e9e82fa24d38bd77172143df3757f020
Author: Eric Wong <normalperson@yhbt.net>
Date:   Mon Sep 7 15:23:01 2009 -0700

    ext: hack to prevent rdoc from finding Rack* namespace

    TODO: find a better way to do this...

commit 1d764d806b65d392fdb3f3dd8055ed18d42a5c2b
Author: Eric Wong <normalperson@yhbt.net>
Date:   Fri Sep 4 19:26:42 2009 -0700

    ext: only duplicate frozen response arrays

    Otherwise modify the response array in place since
    most frameworks give you a modifiable array for you
    to play with anyways.

commit 09cae70d5509530ed3abff9046b1dc0fe448b3b3
Author: Eric Wong <normalperson@yhbt.net>
Date:   Fri Sep 4 19:19:28 2009 -0700

    use Rack::Utils::HeaderHash for $sent_http_* lookups

    No point in having extra code to do case-insensitive lookups,
    especially since the HeaderHash implementation is already in
    wide use and will only get faster as time goes by.

commit 38e617b5a044ed91c799718d2188052c5646bc95
Author: Eric Wong <normalperson@yhbt.net>
Date:   Fri Sep 4 18:49:44 2009 -0700

    ext: store each response element explicitly

    Avoid calling RARRAY_PTR all over the place and make the code
    easier to read/audit as a result.

commit 3ebed5dbd35440cb1e892a1361c71dc0516c64e8
Author: Eric Wong <normalperson@yhbt.net>
Date:   Fri Sep 4 17:43:59 2009 -0700

    ext: more consistent function naming

    s/init_bad_response/init_bad_app_response/

    The new name matches the variable it initializes more closely.

commit f704fba80a8522975b6c167a751f2b68298f1d66
Author: Eric Wong <normalperson@yhbt.net>
Date:   Thu Sep 3 23:43:38 2009 -0700

    add support for several more CGI variables

    $auth_type, $gateway_interface, $server_software,
    $path_translated are all supported now.

commit b32d1da1d760f2e193b293af6dde9da272a85e8d
Author: Eric Wong <normalperson@yhbt.net>
Date:   Thu Sep 3 19:25:39 2009 -0700

    add output record separator option (:ORS)

    This allows overriding the default of "\n".  Behavior remains
    similar to IO#puts, the :ORS (output record separator) is
    appended iff the format doesn't already end with that string.

commit af12d387069d017494daa23534fa7f87aea9ff3b
Author: Eric Wong <normalperson@yhbt.net>
Date:   Thu Sep 3 19:23:43 2009 -0700

    CLOGGER_PURE forces the pure version to be loaded

    This is useful for testing the pure Ruby version in case
    clogger_ext is already installed on your system.

commit b7c6846e317b0f2bfe4807aab34524c2a633947c
Author: Eric Wong <normalperson@yhbt.net>
Date:   Thu Sep 3 09:20:42 2009 -0700

    Ensure underlying logger objects are sync=true

    Userspace buffering defaults are dangerous as the Ruby default
    IO objects do not do line-aware buffering.  This makes the
    README examples with File.open much safer to use out-of-the-box
    for users of the pure-Ruby version.  For users on the MRI C
    extension logging to regular files, this should not have any
    effect as we've optimized those to do unbuffered write(2)
    syscalls anyways.

commit afaa8efb31094a831a68b383523f9bac46a244ac
Author: Eric Wong <normalperson@yhbt.net>
Date:   Wed Sep 2 18:44:55 2009 -0700

    clogger 0.0.5

commit 5fd5bb6aa884ec8f2c62a5edaae6b93ec8275f2e
Author: Eric Wong <normalperson@yhbt.net>
Date:   Wed Sep 2 18:40:02 2009 -0700

    README: minor updates and clarifications

    * link to Clogger::Format when talking about predefined formats
    * use upper-case for escape chars since that's what we use
    * clarify $request_time{PRECISION} range

commit 3bc7000a34c8e1788a5951381c7007f617233da2
Author: Eric Wong <normalperson@yhbt.net>
Date:   Wed Sep 2 18:29:58 2009 -0700

    alias $http_content_{length,type} to $content_{length,type}

    Since Rack doesn't allow the HTTP_CONTENT_{LENGTH,TYPE} headers,
    alias attempts to use those to the non-"HTTP_"-prefixed
    equivalents to avoid confusion on the user side (nginx also does
    this).

commit 41e3dcf47d8ee855747681b80dab1c3b9d6bc457
Author: Eric Wong <normalperson@yhbt.net>
Date:   Wed Sep 2 18:21:09 2009 -0700

    expose the $content_length/$content_type variables

    Since the HTTP_CONTENT_LENGTH and HTTP_CONTENT_TYPE variables
    are not allowed by Rack, we need to allow access to the CGI
    variables instead.

commit 34bda71752bc7401c552a7a4d5b77cf7e1bfe431
Author: Eric Wong <normalperson@yhbt.net>
Date:   Wed Sep 2 18:15:27 2009 -0700

    expose $request_method as documented in the README

    Accessing "REQUEST_METHOD" in the Rack env should be doable as a
    CGI-ish variable.  Thanks to Iñaki Baz Castillo for spotting the
    issue and reporting it to me.

commit d60d0b4656718a63137f89baa15b6589740ad454
Author: Eric Wong <normalperson@yhbt.net>
Date:   Wed Sep 2 01:04:19 2009 -0700

    clogger 0.0.4

commit 144e9909ea0f875b3dd58c6c850e25ed9f70c3cb
Author: Eric Wong <normalperson@yhbt.net>
Date:   Tue Sep 1 19:04:52 2009 -0700

    correctly rebuild simple HTTP/0.9 GET requests

    Back in HTTP/0.9 days (before it was called HTTP/0.9),
    "GET /uri/goes/here\r\n" was a valid HTTP request.

    See rfc 1945, section 4.1 for details on this ancient
    "Simple-Request" scheme used by HTTP/0.9 clients.

commit 98d72e530ae0e7899aee88bcb0a607e046b32965
Author: Eric Wong <normalperson@yhbt.net>
Date:   Tue Sep 1 15:40:07 2009 -0700

    README: point to repo.or.cz git mirror setup

    The rubyforge one is out-of-date right now, so lets stop
    referencing it until the issues around it can be fixed.

commit 12d45b13dc28be86ada0bf304153155cb1975ba9
Author: Eric Wong <normalperson@yhbt.net>
Date:   Tue Sep 1 15:17:06 2009 -0700

    README: new git repository

    I seem to have problems pushing to Rubyforge at the moment, so
    I'll put the repository on a host I have more control over.

    Tracking the issue here:

      http://rubyforge.org/tracker/index.php?func=detail&aid=26185&group_id=5&atid=102

commit c9f68fc6294a59c31728bab9e01350c4b271fe30
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sun Aug 30 22:27:26 2009 -0700

    Ensure hex escaping is done in uppercase

    The pure variant was using lower-case output instead
    of upper case, the ext variant was actually fine in this
    case.  This is for nginx output format compatibility.

commit a6e410b7f85f22e6adbc55eb9dd3a494ca7200b2
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sun Aug 30 22:27:25 2009 -0700

    ext: ensure headers#each in response is valid

    We're not Rack::Lint, but we still need to take steps to
    avoid segfaulting if we host non-Rack::Lint-compliant
    applications.

    This also updates the pure variant to fail on bad applications,
    too.

commit a6978053b9e9f4eff3e54bda6b4aa0c06f707075
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sun Aug 30 22:27:24 2009 -0700

    ext: compiler compatibility fix

    Remove trailing "," for enum

commit 465625fa4763177553846653c2b1198c543d2496
Author: Eric Wong <normalperson@yhbt.net>
Date:   Tue Sep 1 11:26:59 2009 -0700

    GNUmakefile: post_news after release

commit 5fb4355a370632391654a9aa19338fc48a30d143
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sat Aug 29 16:20:19 2009 -0700

    clogger 0.0.3

commit cb1772c91444c0c4eb3e4cf17cac5e265cb2a551
Merge: de46287 ed276bd
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sat Aug 29 16:15:18 2009 -0700

    Merge dcvr:clogger

    * dcvr:clogger:
      ext: several cleanups and robustness improvements
      ext: explicitly gc_mark each struct element

commit ed276bd6ba03b89201bfdfd1730b428b224372f0
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sat Aug 29 16:11:52 2009 -0700

    ext: several cleanups and robustness improvements

    Add a little more tolerance for bad applications that may not
    give us string objects.  This should only have a minor
    performance penalty for proper applications but at least ensures
    we don't segfault on misbehaving apps.

commit e4bdbdcfcbf51ee91e4192ef361ba73e80e14dcc
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sat Aug 29 16:08:55 2009 -0700

    ext: explicitly gc_mark each struct element

    rb_gc_mark_locations doesn't seem in common use for structs and
    there was a fencepost error so the response element didn't seem
    to be marked at times.

    This should fix random errors I've been seeing on big/longer
    response bodies.

commit de46287e9ea70e63e77d17c862ee6bf5ab105e96
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sat Aug 29 13:58:26 2009 -0700

    GNUmakefile: fix "release" now that I've used it..

    * pass correct arguments for changes
    * correctly generate change log from git
    * add blank line after description in release notes

commit d7cbdb6d59434145ed7293f97578feea83a47bc2
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sat Aug 29 13:52:37 2009 -0700

    clogger 0.0.2

commit 4cae518fd0b2ba81114ed4cc26eb1704a1f71e28
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sat Aug 29 13:39:58 2009 -0700

    Log bad/invalid app responses as 500 errors

    Some misbehaved apps can do this to us, and we don't want
    the C extension to segfault when this happens.

commit c03045ecde0f3270d7458ba7ac0d76a25afc6fb2
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sat Aug 29 13:35:22 2009 -0700

    support "$request_uri" as a log variable

    This was documented in the README but never implemented.  Some
    popular web servers set REQUEST_URI even though it's not
    required by Rack, so allow this variable to be used if possible.

    As a side effect, it is also less likely to be modified by
    certain handlers (*cough*Rails::Rack::Static*cough*).

commit 46a176a741ad4d19d81946b4232c0c26fb8bdbc8
Author: Eric Wong <normalperson@yhbt.net>
Date:   Sat Aug 29 12:45:45 2009 -0700

    GNUmakefile: "release" steps

commit 0a582a3a0f18d359792a523d3ca3ae25eba0b279
Author: Eric Wong <normalperson@yhbt.net>
Date:   Fri Aug 28 21:47:18 2009 -0700

    Remove benchmarks from Manifest.txt

    We don't care

commit d3fcf416c616327ca8aacd6f0a1cd8fd74baca01
Author: Eric Wong <normalperson@yhbt.net>
Date:   Fri Aug 28 21:45:29 2009 -0700

    README: updates and clarifications

commit a70468036d9b780bc7ec921f7feb6e1275778169
Author: Eric Wong <normalperson@yhbt.net>
Date:   Fri Aug 28 20:47:43 2009 -0700

    initial import

Originally generated with the Darkfish Rdoc Generator 2, modified by wrongdoc.