[Catalyst-commits] r6239 - in trunk/Catalyst-Runtime: . lib/Catalyst
andyg at dev.catalyst.perl.org
andyg at dev.catalyst.perl.org
Thu Mar 29 20:35:16 GMT 2007
Author: andyg
Date: 2007-03-29 20:35:16 +0100 (Thu, 29 Mar 2007)
New Revision: 6239
Modified:
trunk/Catalyst-Runtime/Changes
trunk/Catalyst-Runtime/lib/Catalyst/Engine.pm
Log:
Decode URIs with APR::Request if available
Modified: trunk/Catalyst-Runtime/Changes
===================================================================
--- trunk/Catalyst-Runtime/Changes 2007-03-29 18:11:23 UTC (rev 6238)
+++ trunk/Catalyst-Runtime/Changes 2007-03-29 19:35:16 UTC (rev 6239)
@@ -5,6 +5,7 @@
* $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.
Modified: trunk/Catalyst-Runtime/lib/Catalyst/Engine.pm
===================================================================
--- trunk/Catalyst-Runtime/lib/Catalyst/Engine.pm 2007-03-29 18:11:23 UTC (rev 6238)
+++ trunk/Catalyst-Runtime/lib/Catalyst/Engine.pm 2007-03-29 19:35:16 UTC (rev 6239)
@@ -20,6 +20,11 @@
# 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
@@ -636,14 +641,18 @@
=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;
More information about the Catalyst-commits
mailing list