perl-modperl mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From André Warnier ...@ice-sa.com>
Subject Re: generic question on input filters
Date Wed, 08 Apr 2009 23:20:33 GMT
Torsten Foertsch wrote:
[...]
Thanks for the previous answer and tips.
I have written and tried the filter, and now I have a problem (at the 
end). Anyone knows what that means ?

Suspicion : I cannot read the content, and print nothing when I am 
called.  Instead of accumulating the content and process it all at once 
at the end, should I process it chunk by chunk ?
Is it OK then when the Content-Length header is wrong (since I am 
changing the size of the data) ?



main server error log:
[Wed Apr 08 22:42:37 2009] [notice] Apache/2.2.3 (Linux/SUSE) 
mod_jk/1.2.28-dev-727724 mod_perl/2.0.2 Perl/v5.8.8 configured -- 
resuming normal operations

VirtualHost error log (logging by the filter, a few runs that seem to 
work fine, then suddenly the error. Sorry for the clutter, that's the 
html form sending stuff):

[Wed Apr 08 22:43:22 2009] [warn] [client 10.13.16.93] FSWB: 1st call, 
referer: http://host.customer.com/starweb/wideoteka/servlet.starweb
[Wed Apr 08 22:43:22 2009] [warn] [client 10.13.16.93] FSWB: buffer: 
[__sessionNumber=67&__pageid=daneIndeksu&__a1=&__a2=&__a3=&__hiddenstyle=A&__dirtyFlag=undefined&__action=216&Near=&SelectedIndexTerms=__05.12.1971%3B%3B%3A%3A&SelectedIndexTerms=__05.1970%3B%3B%3A%3A&SelectedIndexTerms=__06+SIERPNIA+2008+R.%3B%3B%3A%3A&SelectedIndexTerms=__06+SIERPNIA+2008+R.+-+SKR%D3T%3B%3B%3A%3A&SelectedIndexTerms=__06.02.1972%3B%3B%3A%3A&SelectedIndexTerms=__06.04.1969%3B%3B%3A%3A&SelectedIndexTerms=__06.05.1968%3B%3B%3A%3A&SelectedIndexTerms=__06.06.1971%3B%3B%3A%3A&SelectedIndexTerms=__06.10.1965%3B%3B%3A%3A&SelectedIndexTerms=__06.11.1970%3B%3B%3A%3A&SelectedIndexTerms=__06.12.1968+ROK%3B%3B%3A%3A&SelectedIndexTerms=__07+SIERPIE%D1+2008%3B%3B%3A%3A&SelectedIndexTerms=__07+SIERPNIA+2008+R.%3B%3B%3A%3A&SelectedIndexTerms=__07+ZG%A3O%3F+SI%CA%3B%3B%3A%3A&SelectedIndexTerms=__07+ZG%A3O%3F+SI%CA%3B%3B%3A%3A&__ReportId=histIndeksu%5E0],

referer: http://host.customer.com/starweb/wideoteka/servlet.starweb
[Wed Apr 08 22:43:22 2009] [warn] [client 10.13.16.93] FSWB: splitted 
params: __sessionNumber=67 || __pageid=daneIndeksu || __a1= || __a2= || 
__a3= || __hiddenstyle=A || __dirtyFlag=undefined || __action=216 || 
Near= || SelectedIndexTerms=__05.12.1971%3B%3B%3A%3A || 
SelectedIndexTerms=__05.1970%3B%3B%3A%3A || 
SelectedIndexTerms=__06+SIERPNIA+2008+R.%3B%3B%3A%3A || 
SelectedIndexTerms=__06+SIERPNIA+2008+R.+-+SKR%D3T%3B%3B%3A%3A || 
SelectedIndexTerms=__06.02.1972%3B%3B%3A%3A || 
SelectedIndexTerms=__06.04.1969%3B%3B%3A%3A || 
SelectedIndexTerms=__06.05.1968%3B%3B%3A%3A || 
SelectedIndexTerms=__06.06.1971%3B%3B%3A%3A || 
SelectedIndexTerms=__06.10.1965%3B%3B%3A%3A || 
SelectedIndexTerms=__06.11.1970%3B%3B%3A%3A || 
SelectedIndexTerms=__06.12.1968+ROK%3B%3B%3A%3A || 
SelectedIndexTerms=__07+SIERPIE%D1+2008%3B%3B%3A%3A || 
SelectedIndexTerms=__07+SIERPNIA+2008+R.%3B%3B%3A%3A || 
SelectedIndexTerms=__07+ZG%A3O%3F+SI%CA%3B%3B%3A%3A || 
SelectedIndexTerms=__07+ZG%A3O%3F+SI%CA%3B%3B%3A%3A || 
__ReportId=histIndeksu%5E0, referer: 
http://host.customer.com/starweb/wideoteka/servlet.starweb
[Wed Apr 08 22:43:22 2009] [warn] [client 10.13.16.93] FSWB: new 
content: 
[__sessionNumber=67&__pageid=daneIndeksu&__a1=&__a2=&__a3=&__hiddenstyle=A&__dirtyFlag=undefined&__action=216&Near=&SelectedIndexTerms%3D__05.12.1971%3B%3B%3A%3A&SelectedIndexTerms%3D__05.1970%3B%3B%3A%3A&SelectedIndexTerms%3D__06%2BSIERPNIA%2B2008%2BR.%3B%3B%3A%3A&SelectedIndexTerms%3D__06%2BSIERPNIA%2B2008%2BR.%2B-%2BSKROT%3B%3B%3A%3A&SelectedIndexTerms%3D__06.02.1972%3B%3B%3A%3A&SelectedIndexTerms%3D__06.04.1969%3B%3B%3A%3A&SelectedIndexTerms%3D__06.05.1968%3B%3B%3A%3A&SelectedIndexTerms%3D__06.06.1971%3B%3B%3A%3A&SelectedIndexTerms%3D__06.10.1965%3B%3B%3A%3A&SelectedIndexTerms%3D__06.11.1970%3B%3B%3A%3A&SelectedIndexTerms%3D__06.12.1968%2BROK%3B%3B%3A%3A&SelectedIndexTerms%3D__07%2BSIERPIEN%2B2008%3B%3B%3A%3A&SelectedIndexTerms%3D__07%2BSIERPNIA%2B2008%2BR.%3B%3B%3A%3A&SelectedIndexTerms%3D__07%2BZGLO%3F%2BSIE%3B%3B%3A%3A&SelectedIndexTerms%3D__07%2BZGLO%3F%2BSIE%3B%3B%3A%3A&__ReportId%3DhistIndeksu%5E0],

referer: http://host.customer.com/starweb/wideoteka/servlet.starweb
[Wed Apr 08 22:45:35 2009] [warn] [client 10.13.16.93] FSWB: 1st call, 
referer: http://host.customer.com/starweb/wideoteka/servlet.starweb
[Wed Apr 08 22:45:35 2009] [warn] [client 10.13.16.93] FSWB: buffer: 
[__sessionNumber=67&__pageid=daneIndeksu&__a1=&__a2=&__a3=&__hiddenstyle=A&__dirtyFlag=undefined&__action=213&Near=ab&SelectedIndexTerms=__07.01.1968%3B%3B%3A%3A&SelectedIndexTerms=__07.01.1973%3B%3B%3A%3A&SelectedIndexTerms=__07.02.1959+NR+9%3B%3B%3A%3A&SelectedIndexTerms=__07.02.1967%3B%3B%3A%3A&SelectedIndexTerms=__07.03.1971%3B%3B%3A%3A&SelectedIndexTerms=__07.04.1968%3B%3B%3A%3A&SelectedIndexTerms=__07.05.1972%3B%3B%3A%3A&SelectedIndexTerms=__07.07.1968%3B%3B%3A%3A&SelectedIndexTerms=__07.08.1972%3B%3B%3A%3A&SelectedIndexTerms=__07.09.1969%3B%3B%3A%3A&SelectedIndexTerms=__07.09.1970%3B%3B%3A%3A&SelectedIndexTerms=__07.11.1971%3B%3B%3A%3A&SelectedIndexTerms=__08.03.1970%3B%3B%3A%3A&SelectedIndexTerms=__08.04.1962%3B%3B%3A%3A&SelectedIndexTerms=__08.04.1973%3B%3B%3A%3A&__ReportId=histIndeksu%5E0],

referer: http://host.customer.com/starweb/wideoteka/servlet.starweb
[Wed Apr 08 22:45:35 2009] [warn] [client 10.13.16.93] FSWB: splitted 
params: __sessionNumber=67 || __pageid=daneIndeksu || __a1= || __a2= || 
__a3= || __hiddenstyle=A || __dirtyFlag=undefined || __action=213 || 
Near=ab || SelectedIndexTerms=__07.01.1968%3B%3B%3A%3A || 
SelectedIndexTerms=__07.01.1973%3B%3B%3A%3A || 
SelectedIndexTerms=__07.02.1959+NR+9%3B%3B%3A%3A || 
SelectedIndexTerms=__07.02.1967%3B%3B%3A%3A || 
SelectedIndexTerms=__07.03.1971%3B%3B%3A%3A || 
SelectedIndexTerms=__07.04.1968%3B%3B%3A%3A || 
SelectedIndexTerms=__07.05.1972%3B%3B%3A%3A || 
SelectedIndexTerms=__07.07.1968%3B%3B%3A%3A || 
SelectedIndexTerms=__07.08.1972%3B%3B%3A%3A || 
SelectedIndexTerms=__07.09.1969%3B%3B%3A%3A || 
SelectedIndexTerms=__07.09.1970%3B%3B%3A%3A || 
SelectedIndexTerms=__07.11.1971%3B%3B%3A%3A || 
SelectedIndexTerms=__08.03.1970%3B%3B%3A%3A || 
SelectedIndexTerms=__08.04.1962%3B%3B%3A%3A || 
SelectedIndexTerms=__08.04.1973%3B%3B%3A%3A || 
__ReportId=histIndeksu%5E0, referer: 
http://host.customer.com/starweb/wideoteka/servlet.starweb
[Wed Apr 08 22:45:35 2009] [warn] [client 10.13.16.93] FSWB: new 
content: 
[__sessionNumber=67&__pageid=daneIndeksu&__a1=&__a2=&__a3=&__hiddenstyle=A&__dirtyFlag=undefined&__action=213&Near=ab&SelectedIndexTerms%3D__07.01.1968%3B%3B%3A%3A&SelectedIndexTerms%3D__07.01.1973%3B%3B%3A%3A&SelectedIndexTerms%3D__07.02.1959%2BNR%2B9%3B%3B%3A%3A&SelectedIndexTerms%3D__07.02.1967%3B%3B%3A%3A&SelectedIndexTerms%3D__07.03.1971%3B%3B%3A%3A&SelectedIndexTerms%3D__07.04.1968%3B%3B%3A%3A&SelectedIndexTerms%3D__07.05.1972%3B%3B%3A%3A&SelectedIndexTerms%3D__07.07.1968%3B%3B%3A%3A&SelectedIndexTerms%3D__07.08.1972%3B%3B%3A%3A&SelectedIndexTerms%3D__07.09.1969%3B%3B%3A%3A&SelectedIndexTerms%3D__07.09.1970%3B%3B%3A%3A&SelectedIndexTerms%3D__07.11.1971%3B%3B%3A%3A&SelectedIndexTerms%3D__08.03.1970%3B%3B%3A%3A&SelectedIndexTerms%3D__08.04.1962%3B%3B%3A%3A&SelectedIndexTerms%3D__08.04.1973%3B%3B%3A%3A&__ReportId%3DhistIndeksu%5E0],

referer: http://host.customer.com/starweb/wideoteka/servlet.starweb
[Wed Apr 08 22:45:48 2009] [warn] [client 10.13.16.93] FSWB: 1st call, 
referer: http://host.customer.com/starweb/wideoteka/servlet.starweb
[Wed Apr 08 22:45:48 2009] [warn] [client 10.13.16.93] FSWB: buffer: 
[__sessionNumber=67&__pageid=daneIndeksu&__a1=&__a2=&__a3=&__hiddenstyle=A&__dirtyFlag=undefined&__action=216&Near=ab&SelectedIndexTerms=__AB+OVO%3B%3B%3A%3A&SelectedIndexTerms=__AB+URBE+CONDITA%3B%3B%3A%3A&SelectedIndexTerms=__ABADDON%3B%3B%3A%3A&SelectedIndexTerms=__ABAKANOWICZ+W+POZNANIU%3B%3B%3A%3A&SelectedIndexTerms=__ABAKANOWICZ+W+STARMACH+GALLERY%3B%3B%3A%3A&SelectedIndexTerms=__ABAKANY%3B%3B%3A%3A&SelectedIndexTerms=__ABAKANY+CZY+STEREOFORMY%3B%3B%3A%3A&SelectedIndexTerms=__ABAKANY+W+KRAKOWIE+%7CA+00%3A14%3A31%3A15+%7CB+00%3A17%3A49%3A15+%7CC+3+%7CD+18%3B%3B%3A%3A&SelectedIndexTerms=__ABANDON%3B%3B%3A%3A&SelectedIndexTerms=__ABBA%3B%3B%3A%3A&SelectedIndexTerms=__ABBA%3B%3B%3A%3A&SelectedIndexTerms=__ABBA+-+MONEY%3B%3B%3A%3A&SelectedIndexTerms=__ABBA+EBAN+AT+UN%3B%3B%3A%3A&SelectedIndexTerms=__ABBA+PATER%3B%3B%3A%3A&SelectedIndexTerms=__ABBA+W+STUDIO+2%3B%3B%3A%3A&__ReportId=histIndeksu%5E0],

referer: http://host.customer.com/starweb/wideoteka/servlet.starweb
[Wed Apr 08 22:45:48 2009] [warn] [client 10.13.16.93] FSWB: splitted 
params: __sessionNumber=67 || __pageid=daneIndeksu || __a1= || __a2= || 
__a3= || __hiddenstyle=A || __dirtyFlag=undefined || __action=216 || 
Near=ab || SelectedIndexTerms=__AB+OVO%3B%3B%3A%3A || 
SelectedIndexTerms=__AB+URBE+CONDITA%3B%3B%3A%3A || 
SelectedIndexTerms=__ABADDON%3B%3B%3A%3A || 
SelectedIndexTerms=__ABAKANOWICZ+W+POZNANIU%3B%3B%3A%3A || 
SelectedIndexTerms=__ABAKANOWICZ+W+STARMACH+GALLERY%3B%3B%3A%3A || 
SelectedIndexTerms=__ABAKANY%3B%3B%3A%3A || 
SelectedIndexTerms=__ABAKANY+CZY+STEREOFORMY%3B%3B%3A%3A || 
SelectedIndexTerms=__ABAKANY+W+KRAKOWIE+%7CA+00%3A14%3A31%3A15+%7CB+00%3A17%3A49%3A15+%7CC+3+%7CD+18%3B%3B%3A%3A

|| SelectedIndexTerms=__ABANDON%3B%3B%3A%3A || 
SelectedIndexTerms=__ABBA%3B%3B%3A%3A || 
SelectedIndexTerms=__ABBA%3B%3B%3A%3A || 
SelectedIndexTerms=__ABBA+-+MONEY%3B%3B%3A%3A || 
SelectedIndexTerms=__ABBA+EBAN+AT+UN%3B%3B%3A%3A || 
SelectedIndexTerms=__ABBA+PATER%3B%3B%3A%3A || 
SelectedIndexTerms=__ABBA+W+STUDIO+2%3B%3B%3A%3A || 
__ReportId=histIndeksu%5E0, referer: 
http://host.customer.com/starweb/wideoteka/servlet.starweb
[Wed Apr 08 22:45:48 2009] [warn] [client 10.13.16.93] FSWB: new 
content: 
[__sessionNumber=67&__pageid=daneIndeksu&__a1=&__a2=&__a3=&__hiddenstyle=A&__dirtyFlag=undefined&__action=216&Near=ab&SelectedIndexTerms%3D__AB%2BOVO%3B%3B%3A%3A&SelectedIndexTerms%3D__AB%2BURBE%2BCONDITA%3B%3B%3A%3A&SelectedIndexTerms%3D__ABADDON%3B%3B%3A%3A&SelectedIndexTerms%3D__ABAKANOWICZ%2BW%2BPOZNANIU%3B%3B%3A%3A&SelectedIndexTerms%3D__ABAKANOWICZ%2BW%2BSTARMACH%2BGALLERY%3B%3B%3A%3A&SelectedIndexTerms%3D__ABAKANY%3B%3B%3A%3A&SelectedIndexTerms%3D__ABAKANY%2BCZY%2BSTEREOFORMY%3B%3B%3A%3A&SelectedIndexTerms%3D__ABAKANY%2BW%2BKRAKOWIE%2B%7CA%2B00%3A14%3A31%3A15%2B%7CB%2B00%3A17%3A49%3A15%2B%7CC%2B3%2B%7CD%2B18%3B%3B%3A%3A&SelectedIndexTerms%3D__ABANDON%3B%3B%3A%3A&SelectedIndexTerms%3D__ABBA%3B%3B%3A%3A&SelectedIndexTerms%3D__ABBA%3B%3B%3A%3A&SelectedIndexTerms%3D__ABBA%2B-%2BMONEY%3B%3B%3A%3A&SelectedIndexTerms%3D__ABBA%2BEBAN%2BAT%2BUN%3B%3B%3A%3A&SelectedIndexTerms%3D__ABBA%2BPATER%3B%3B%3A%3A&SelectedIndexTerms%3D__ABBA%2BW%2BSTUDIO%2B2%3B%3B%3A%3A&__ReportId%3Dhist
Indeksu%5E0], 
referer: http://host.customer.com/starweb/wideoteka/servlet.starweb
[Wed Apr 08 22:46:22 2009] [warn] [client 10.13.16.93] FSWB: 1st call, 
referer: http://host.customer.com/starweb/wideoteka/servlet.starweb
[Wed Apr 08 22:46:22 2009] [warn] [client 10.13.16.93] FSWB: buffer: 
[__sessionNumber=67&__pageid=daneIndeksu&__a1=&__a2=&__a3=&__hiddenstyle=A&__dirtyFlag=undefined&__action=213&Near=ABBADON+-+ANIO%A3+ZAG%A3ADY&SelectedIndexTerms=__ABBA%3A+THE+MAMMA+MIA+STORY%3B%3B%3A%3A&SelectedIndexTerms=__ABBADO+IN+BERLIN+-+THE+FIRST+YEAR%3B%3B%3A%3A&SelectedIndexTerms=__ABBADON+-+ANIO%A3+ZAG%A3ADY%3B%3B%3A%3A&SelectedIndexTerms=__ABBAS+KIAROSTANI%3B%3B%3A%3A&SelectedIndexTerms=__ABBEYS+%26+MONASTERIES+%2F+ARMENIAN+MONASTERY+OF+SRPOTS+ISRAEL%3B%3B%3A%3A&SelectedIndexTerms=__ABBEYS+%26+MONASTERIES+%2F+CARMELITE+MONKS+%26+NUNS%3B%3B%3A%3A&SelectedIndexTerms=__ABBEYS+%26+MONASTERIES+%2F+COPTIC+MONASTERRIES+ANBA+BISHOY%3B%3B%3A%3A&SelectedIndexTerms=__ABBEYS+%26+MONASTERIES+%2F+ETHIOPIAN-ORTODOX+JERUSALEM%3B%3B%3A%3A&SelectedIndexTerms=__ABBEYS+%26+MONASTERIES+%2F+FRANCISKANES+-+CONVENTUELS+ASSISI%3B%3B%3A%3A&SelectedIndexTerms=__ABBEYS+%26+MONASTERIES+%2F+GREEK-ORTHODOX+MONASTERY+OF+ST.+JOHN%3B%3B%3A%3A&SelectedIndexTerms=__ABBEYS+%26+MONASTERIES+%2F+GREEK-O
RTHODOX+OF+ZERBISTA%3B%3B%3A%3A&SelectedIndexTerms=__ABBEYS+%26+MONASTERIES+%2F+MONASTERIO+DI+CAMALDOLI+ITALY%3B%3B%3A%3A&SelectedIndexTerms=__ABBEYS+%26+MONASTERIES+%2F+ORTHODOX+MONASTERY+HOLY+TRINI],

referer: http://host.customer.com/starweb/wideoteka/servlet.starweb

main server error log :
[Wed Apr 08 22:46:22 2009] [crit] [Wed Apr 08 22:46:22 2009] file 
http_filters.c, line 1324, assertion "!(((&(bb)->list))->next == (struct 
apr_bucket *)((char *)((&(bb)->list)) - ((long) (((char *) (&(((struct 
apr_bucket*)((void *)0))->link))) - ((char *) ((void *)0))))))" failed
[Wed Apr 08 22:46:22 2009] [notice] child pid 5518 exit signal Aborted (6)


Here is the filter code, non-essential parts omitted :

sub handler : FilterRequestHandler {
	my $f = shift;
	my $r = $f->r;
	my $logger = $r->log;
	my $ctx = $f->ctx;
	unless (defined $ctx) {
		# first invocation
		$logger->warn("FSWB: 1st call") if DEBUG;
		# remove the request Content-Length header (NOT!)
		#$r->headers_in->unset('Content-Length');
		$f->ctx({ 'post' => ''});
		$ctx = $f->ctx;
	}
     my $post = $ctx->{'post'}; # empty first time around,  but not later
	
	while ($f->read(my $buffer, BUFLEN)) {
		# read from brigade and accumulate
		$logger->warn("FSWB: buffer: [$buffer]") if DEBUG;
		$post .= $buffer;
	}
	# this brigade exhausted, but maybe there's more
	unless ($f->seen_eos) {
		# there is more then
		$ctx->{'post'} = $post; # save accumulated data in context
		return OK;
	}
	# have seen eos, so we can get to work
	my $filtered = '';
	my @qparams = split('&',$post);
	$logger->warn("FSWB: splitted params: " . join(' || ',@qparams)) if DEBUG;
	foreach (@qparams) {
		# if the parameter does not contain any % sign at all, take a shortcut
		unless ($_ =~ /%/) {
			$filtered .= '&' . $_;
			next;
		}
		my $unpar = uri_unescape($_);
		#my @chars = split('',$cleanpar);
		$unpar =~ s/([\x80-\xFF])/$CVTTBL->{$1} || $1/ge;
		$filtered .= '&' . uri_escape($unpar);
	}
	$filtered =~ s/^\&//;
	$logger->warn("FSWB: new content: [$filtered]") if DEBUG;
	# re-add a Content-size header ?
	my $size = length($filtered);
	$r->headers_in->set('Content-Length',"$size");
	# and forward content
	$f->print($filtered);
	
     return OK;
}	

Mime
View raw message