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=0c8929a0b9b9d91d049b6d45c606bff2f3f9b4c0;hp=ff2e79785161a6f657c76698942a3019ef7491b2;hb=7257e9dbc2d2550e43b0ddeb1027360428a3c44f;hpb=73664287069fe2e0c731df29f80b5c19838c60d2 diff --git a/lib/Catalyst/Engine.pm b/lib/Catalyst/Engine.pm index ff2e797..0c8929a 100644 --- a/lib/Catalyst/Engine.pm +++ b/lib/Catalyst/Engine.pm @@ -39,15 +39,16 @@ Finalize body. Prints the response output. sub finalize_body { my ( $self, $c ) = @_; - if ( ref $c->response->body && $c->response->body->can('read') ) { - while ( !$c->response->body->eof() ) { - $c->response->body->read( my $buffer, $CHUNKSIZE ); + my $body = $c->response->body; + if ( ref $body && ($body->can('read') || ref($body) eq 'GLOB') ) { + while ( !eof $body ) { + read $body, my $buffer, $CHUNKSIZE; last unless $self->write( $c, $buffer ); } - $c->response->body->close(); + close $body; } else { - $self->write( $c, $c->response->body ); + $self->write( $c, $body ); } } @@ -315,6 +316,7 @@ sub prepare_body { unless ( $c->request->{_body} ) { $c->request->{_body} = HTTP::Body->new( $type, $self->read_length ); + $c->request->{_body}->{tmpdir} = $c->config->{uploadtmp} if exists $c->config->{uploadtmp}; } if ( $self->read_length > 0 ) {