* $c->uri_for (approx. 8x faster)
* $c->engine->prepare_path (approx. 27x faster)
* $c->engine->prepare_query_parameters (approx. 5x faster)
+ - If libapreq2 is installed, URIs are decoded using a faster C function.
- Updated HTTP::Body dependency to 0.9 which fixes the following issues:
* Handle when IE sometimes sends an extra CRLF after the POST body.
* Empty fields in multipart/form-data POSTs are no longer ignored.
# Amount of data to read from input on each pass
our $CHUNKSIZE = 64 * 1024;
+# See if we can use libapreq2 for URI unescaping
+use constant HAS_APR => eval {
+ require APR::Request;
+};
+
=head1 NAME
Catalyst::Engine - The Catalyst Engine
=head2 $self->unescape_uri($uri)
-Unescapes a given URI using the most efficient method available. Engines such
-as Apache may implement this using Apache's C-based modules, for example.
+Unescapes a given URI using the most efficient method available. Engines
+can subclass to provide faster implementations.
=cut
sub unescape_uri {
my $self = shift;
+ if ( HAS_APR ) {
+ return APR::Request::decode(@_);
+ }
+
my $e = URI::Escape::uri_unescape(@_);
$e =~ s/\+/ /g;