perl-modperl mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alex Masidlover <alex.masidlo...@zednax.com>
Subject Re: Bug - Strange issue with mod_perl 2.0.10 / Apache 2.4 corrupting nfreeze data
Date Sun, 07 Aug 2016 13:37:28 GMT
On Sun, 2016-04-03 at 17:03 +0200, Vincent Veyron wrote:
> On Sun, 03 Apr 2016 14:11:23 +0100
> Alex Masidlover <alex.masidlover@zednax.com> wrote:
> 
> > 
> > 
> > This has all worked perfectly up until I upgraded to Apache 2.4 /
> > mod_perl 2.0.10 - 
> After upgrading to Apache 2.4 and mod_perl 2.0.9, I had to make those
> two changes to my application :
> 
> In a PerlOutputFilterHandler, change '$content .= $buffer' to
> '$content .= decode_utf8($buffer)'
> 
> And in response handlers, change '$args{$_} = $req->param($_)' to
> '$args{$_} = decode_utf8($req->param($_))'
> 
> Not sure it applies to your case, but something changed in Apache 2.4
> concerning UTF-8 data.
> 
> If I understood correctly, anything that goes through APR::Table is
> considered UTF-8, however the SvUTF8 flag is not set, so you get
> double encoding when processing your data.
> 

Thanks for the suggestion - its taken a while but I've manage to free
up a machine to roll forwards and test on; unfortunately I've got no
experience with Apache and filters. I've come up with this:

package Zymonic::Decryptor::Filter;
use strict;

use base qw(Apache2::Filter);
use Encode qw(decode);
use constant BUFF_LEN => 1024;
use Apache2::Const -compile => 'OK';

sub utf8_filter : FilterRequestHandler {

my $f = shift;

my $content = '';
while($f->read(my $buffer, BUFF_LEN)) {
$content .= decode_utf8($buffer);
}

$f->print($content);

return Apache2::Const::OK;

}

but when I add it with:

PerlOutputFilterHandler Zymonic::Decryptor::Filter::utf8_filter


I get:

:Apache2 IO flush: (500) Unknown error 500 at -e line 0

in the Apache error log whenever I hit the server with a request.

I'm guessing I've done something very wrong with the filter, but I can
find very few examples of how to use Apache2::Filter.

Thanks,

Alex

-- 
Technical Director - Zednax Limited
W: http://www.zednax.com
T: +44 333 444 0160
F: +44 161 660 8010

Zednax Limited is registered in England and Wales, Company no. 05321754.
Registered address: Meadow House, Meadow Lane, Nottingham, NG2 3HS.
Zednax Limited is VAT registered, VAT registration no. GB 855 4468 92.




Mime
View raw message