use Catalyst::Request::Upload;
use Catalyst::Response;
use Catalyst::Utils;
+use File::stat;
use NEXT;
use Text::SimpleTable;
use Path::Class;
require Module::Pluggable::Fast;
# Helper script generation
-our $CATALYST_SCRIPT_GEN = 24;
+our $CATALYST_SCRIPT_GEN = 25;
__PACKAGE__->mk_classdata($_)
for qw/components arguments dispatcher engine log dispatcher_class
push @{ $c->{stats} }, [ $action, sprintf( '%fs', $elapsed ) ];
}
}
+ my $last = ${ $c->stack }[-1];
pop( @{ $c->stack } );
if ( my $error = $@ ) {
else {
unless ( ref $error ) {
chomp $error;
- $error = qq/Caught exception "$error"/;
+ my $class = $last->class;
+ my $name = $last->name;
+ $error = qq/Caught exception in $class->$name "$error"/;
}
$c->error($error);
$c->state(0);
# Content-Length
if ( $c->response->body && !$c->response->content_length ) {
- $c->response->content_length( bytes::length( $c->response->body ) );
+
+ # get the length from a filehandle
+ if ( ref $c->response->body && $c->response->body->can('read') ) {
+ if ( my $stat = stat $c->response->body ) {
+ $c->response->content_length( $stat->size );
+ }
+ else {
+ $c->log->warn('Serving filehandle without a content-length');
+ }
+ }
+ else {
+ $c->response->content_length( bytes::length( $c->response->body ) );
+ }
}
# Errors