$c->next::method(@_);
my $enc = $c->encoding;
+ return unless $enc;
for my $key (qw/ parameters query_parameters body_parameters /) {
for my $value ( values %{ $c->request->{$key} } ) {
for my $value ( values %{ $c->request->uploads } ) {
# skip if it fails for uploads, as we don't usually want uploads touched
# in any way
- $_->{filename} = try {
- $enc->decode( $_->{filename}, $CHECK )
- } catch {
- $c->handle_unicode_encoding_exception({
- param_value => $_->{filename},
- error_msg => $_,
- encoding_step => 'uploads',
- });
- } for ( ref($value) eq 'ARRAY' ? @{$value} : $value );
+ for my $inner_value ( ref($value) eq 'ARRAY' ? @{$value} : $value ) {
+ $inner_value->{filename} = try {
+ $enc->decode( $inner_value->{filename}, $CHECK )
+ } catch {
+ $c->handle_unicode_encoding_exception({
+ param_value => $inner_value->{filename},
+ error_msg => $_,
+ encoding_step => 'uploads',
+ });
+ };
+ }
}
}
my $ret = $c->next::method(@_);
+ my $enc = $c->encoding;
+ return $ret unless $enc;
+
foreach (@{$c->req->arguments}, @{$c->req->captures}) {
$_ = $c->_handle_param_unicode_decoding($_);
}
my $conf = $self->config;
- # Allow an explict undef encoding to disable default of utf-8
+ # Allow an explicit undef encoding to disable default of utf-8
my $enc = delete $conf->{encoding};
$self->encoding( $enc );
- return $self->next::method(@_);
+ return $self->next::method(@_)
+ unless $self->setup_finished; ## hack to stop possibly meaningless test fail... (jnap)
}
sub _handle_unicode_decoding {