From 717107cb49ba108553873ba2f1ff49be7127d9ce Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Mon, 3 May 2021 22:50:08 +0200 Subject: Do not perform transfer processing for child requests to related stations MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This fixes transfer trains getting lost when requested from a related station Notable offender: "Berlin Südkreuz" lacked S 41 / S42 (ring line from Südkreuz (S) to Südkreuz (S) with transfer to/from the next/previous incarnation), as it referenced "Berlin Südkreuz (S)". "Berlin Südkreuz (S)" itself worked fine. --- lib/Travel/Status/DE/IRIS.pm | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'lib') diff --git a/lib/Travel/Status/DE/IRIS.pm b/lib/Travel/Status/DE/IRIS.pm index 9cf912f..9ea31a2 100644 --- a/lib/Travel/Status/DE/IRIS.pm +++ b/lib/Travel/Status/DE/IRIS.pm @@ -81,6 +81,12 @@ sub new { $self->{related_stations} = \@related_stations; for my $ref (@related_stations) { + + # We (the parent) perform transfer processing, so child requests must not + # do it themselves. Otherwise, trains from child requests will be + # processed twice and may be lost. + # Similarly, child requests must not perform requests to related + # stations -- we're already doing that right now. my $ref_status = Travel::Status::DE::IRIS->new( datetime => $self->{datetime}, developer_mode => $self->{developer_mode}, @@ -92,6 +98,7 @@ sub new { realtime_cache => $self->{rt_cache}, strptime_obj => $self->{strptime_obj}, user_agent => $self->{user_agent}, + keep_transfers => 1, with_related => 0, ); if ( not $ref_status->errstr ) { -- cgit v1.2.3