Date | Commit message (Collapse) |
|
It's unintuitive that merely setting the environment variable to
an empty string or zero would be a boolean true.
|
|
|
|
There's no way in hell a valid file descriptor can have
a negative number attached to it.
|
|
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.
|
|
|
|
Rack is always used, and Rack itself uses autoload to
save memory.
|
|
|
|
This allows GPLv2-only programs to bundle us.
Signed-off-by: Eric Wong <normalperson@yhbt.net>
|
|
|
|
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.
|
|
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.
|
|
|
|
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
|
|
default CFLAGS for 1.9.2dev complains
|
|
|
|
These were (fortunately) harmless, but better safe than
sorry.
|
|
|
|
The return value of rb_inspect() may not be visible
on the stack without assigning it to a local variable
first.
|
|
This quiets down warnings when used with RubyGems loaders such
as Isolate and Bundler where the HTTP server already loaded
Rack.
|
|
|
|
some people subclass HeaderHash and want them preserved
through the middleware stack.
|
|
They're slightly faster when we know a number is small enough
to be a FIXNUM.
|
|
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.
|
|
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.
|
|
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.
|
|
|
|
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"
|
|
|
|
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.
|
|
hacking the C extension with RSTRING_LEN() is so much easier :P
|
|
instance variable lookups are expensive as-is
|
|
|
|
|
|
A bare "File" constant may conflict with Rack::File
when run inside Rack::Builder
|
|
It's too crazy to have to special case for frozen response
constants. 3-element arrays are cheap under Ruby 1.9 anyways.
|
|
|
|
Also uppercase rake/ruby variables
|
|
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
|
|
|
|
|
|
|
|
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.
|
|
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.
|
|
This is to remain compatible with Rack if it relaxes
Rack::Lint to allow subclasses.
|
|
We now properly handle bodies that do not respond to the :close
method. Additionally there small documentation/formatting
fixes.
|
|
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
|
|
|
|
Hopefully it was obvious before, if not it is now.
|
|
escaping issues are too painful to deal with
|
|
|