Date | Commit message (Collapse) |
|
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
|
|
|
|
Odd, RubyGems doesn't warn about a lack of it and
I didn't notice this field until now...
|
|
|
|
"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").
|
|
|
|
It's expensive to create if not needed, and no current released
version of Rack has my proposed optimizations for it yet...
|
|
|
|
|
|
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.
|
|
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
|
|
TODO: find a better way to do this...
|
|
Otherwise modify the response array in place since
most frameworks give you a modifiable array for you
to play with anyways.
|
|
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.
|
|
Avoid calling RARRAY_PTR all over the place and make the code
easier to read/audit as a result.
|
|
s/init_bad_response/init_bad_app_response/
The new name matches the variable it initializes more closely.
|
|
$auth_type, $gateway_interface, $server_software,
$path_translated are all supported now.
|
|
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.
|
|
This is useful for testing the pure Ruby version in case
clogger_ext is already installed on your system.
|
|
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.
|
|
|
|
* 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
|
|
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).
|
|
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.
|
|
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.
|
|
|
|
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.
|
|
The rubyforge one is out-of-date right now, so lets stop
referencing it until the issues around it can be fixed.
|
|
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
|
|
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.
|
|
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.
|
|
Remove trailing "," for enum
|
|
|
|
|
|
* dcvr:clogger:
ext: several cleanups and robustness improvements
ext: explicitly gc_mark each struct element
|
|
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.
|
|
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.
|
|
* pass correct arguments for changes
* correctly generate change log from git
* add blank line after description in release notes
|
|
|
|
Some misbehaved apps can do this to us, and we don't want
the C extension to segfault when this happens.
|
|
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*).
|
|
|
|
We don't care
|
|
|
|
|