diff options
Diffstat (limited to 'lib/Travelynx/Helper/HAFAS.pm')
-rw-r--r-- | lib/Travelynx/Helper/HAFAS.pm | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/lib/Travelynx/Helper/HAFAS.pm b/lib/Travelynx/Helper/HAFAS.pm index 6aefcf1..bee4cba 100644 --- a/lib/Travelynx/Helper/HAFAS.pm +++ b/lib/Travelynx/Helper/HAFAS.pm @@ -197,10 +197,20 @@ sub get_xml_p { $body =~ s{<Attribute([^>]+)text="([^"]*)"([^"=]*)""}{<Attribute$1text="$2*$3*"}s; eval { $tree = XML::LibXML->load_xml( string => $body ) }; - if ($@) { - $self->{log}->info("load_xml($url): $@"); + if ( my $err = $@ ) { + if ( $err =~ m{extra content at the end}i ) { + + # We requested XML, but received an HTML error page + # (which was returned with HTTP 200 OK). + $self->{log}->debug("load_xml($url): $err"); + } + else { + # There is invalid XML which we might be able to fix via + # regular expressions, so dump it into the production log. + $self->{log}->info("load_xml($url): $err"); + } $cache->freeze( $url, $traininfo ); - $promise->resolve($traininfo); + $promise->reject("hafas->get_xml_p($url): $err"); return; } |