X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=lib%2FCatalyst%2FEngine.pm;h=4170a084bd2f696cc132c7aee1eefddaff258383;hp=f378d57d6f4de367b7ac872bcaa21c7c0f20f61b;hb=4bd82c41837b80f57b4ca6a611a20d11d4830980;hpb=fbcc39ad23f2bbecf5d84c9ba581e6af86fcd460 diff --git a/lib/Catalyst/Engine.pm b/lib/Catalyst/Engine.pm index f378d57..4170a08 100644 --- a/lib/Catalyst/Engine.pm +++ b/lib/Catalyst/Engine.pm @@ -14,6 +14,9 @@ __PACKAGE__->mk_accessors( qw/read_position read_length/ ); # Stringify to class use overload '""' => sub { return ref shift }, fallback => 1; +# Amount of data to read from input on each pass +our $CHUNKSIZE = 4096; + =head1 NAME Catalyst::Engine - The Catalyst Engine @@ -243,11 +246,21 @@ sub prepare_body { if ( $self->read_length > 0 ) { while ( my $buffer = $self->read( $c ) ) { - $c->request->{_body}->add( $buffer ); + $c->prepare_body_chunk( $buffer ); } } } +=item $self->prepare_body_chunk($c) + +=cut + +sub prepare_body_chunk { + my ( $self, $c, $chunk ) = @_; + + $c->request->{_body}->add( $chunk ); +} + =item $self->prepare_body_parameters($c) =cut @@ -382,7 +395,7 @@ sub read { } my $remaining = $self->read_length - $self->read_position; - $maxlength ||= $self->read_length; + $maxlength ||= $CHUNKSIZE; # Are we done reading? if ( $remaining <= 0 ) {