- From: Ville Skytta via cvs-syncmail <cvsmail@w3.org>
- Date: Tue, 23 Jun 2009 18:08:23 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/validator/httpd/cgi-bin
In directory hutz:/tmp/cvs-serv30427/httpd/cgi-bin
Modified Files:
check
Log Message:
Improve Content-Encoding decode error handling.
Index: check
===================================================================
RCS file: /sources/public/validator/httpd/cgi-bin/check,v
retrieving revision 1.657
retrieving revision 1.658
diff -u -d -r1.657 -r1.658
--- check 23 Jun 2009 17:59:48 -0000 1.657
+++ check 23 Jun 2009 18:08:21 -0000 1.658
@@ -915,7 +915,9 @@
$File->{Templates}->{Error}->param(fatal_missing_checker => "HTML5 Validator");
}
else {
- my $content = $res->decoded_content(charset => 'none');
+ my $content = &get_content($File, $res);
+ return $File if $File->{'Error Flagged'};
+
# and now we parse according to http://wiki.whatwg.org/wiki/Validator.nu_XML_Output
# I wish we could use XML::LibXML::Reader here. but SHAME on those major
# unix distributions still shipping with libxml2 2.6.16… 4 years after its release
@@ -1046,7 +1048,9 @@
$File->{Templates}->{Error}->param(fatal_missing_checker => "HTML5 Validator");
}
else {
- my $content = $res->decoded_content(charset => 'none');
+ my $content = &get_content($File, $res);
+ return $File if $File->{'Error Flagged'};
+
# and now we parse according to http://wiki.whatwg.org/wiki/Validator.nu_XML_Output
# I wish we could use XML::LibXML::Reader here. but SHAME on those major
# unix distributions still shipping with libxml2 2.6.16… 4 years after its release
@@ -1723,7 +1727,8 @@
scalar($res->request->uri),
);
- my $content = $res->decoded_content(charset => 'none');
+ my $content = &get_content($File, $res);
+ return $File if $File->{'Error Flagged'};
$File->{Bytes} = $content;
$File->{Mode} = $mode;
@@ -1851,6 +1856,31 @@
}
#
+# Get content with Content-Encodings decoded from a response.
+sub get_content ($$) {
+ my $File = shift;
+ my $res = shift;
+
+ my $content;
+ eval {
+ $content = $res->decoded_content(charset => 'none', raise_error => 1);
+ };
+ if ($@) {
+ (my $errmsg = $@) =~ s/ at .*//s;
+ my $cenc = $res->header("Content-Encoding");
+ my $uri = $res->request->uri;
+ $File->{'Error Flagged'} = TRUE;
+ $File->{Templates}->{Error}->param(fatal_decode_error => TRUE);
+ $File->{Templates}->{Error}->param(fatal_decode_errmsg => $errmsg);
+ $File->{Templates}->{Error}->param(fatal_decode_cenc => $cenc);
+ # Include URI because it might be a subsystem (eg. HTML5 validator) one
+ $File->{Templates}->{Error}->param(fatal_decode_uri => $uri);
+ }
+
+ return $content;
+}
+
+#
# Check recursion level and enforce Max Recursion limit.
sub check_recursion ($$) {
my $File = shift;
Received on Tuesday, 23 June 2009 18:08:32 UTC