diff options
Diffstat (limited to 'lib')
| -rwxr-xr-x | lib/Travelynx.pm | 8 | ||||
| -rw-r--r-- | lib/Travelynx/Command/work.pm | 6 | 
2 files changed, 14 insertions, 0 deletions
| diff --git a/lib/Travelynx.pm b/lib/Travelynx.pm index aae5746..8ec3c8e 100755 --- a/lib/Travelynx.pm +++ b/lib/Travelynx.pm @@ -553,6 +553,8 @@ sub startup {  			my ( $self, %opt ) = @_;  			my $station = $opt{station}; +			my $dep_eva = $opt{dep_eva}; +			my $arr_eva = $opt{arr_eva};  			my $force   = $opt{force};  			my $uid     = $opt{uid};  			my $db      = $opt{db} // $self->pg->db; @@ -576,6 +578,12 @@ sub startup {  			if ( $status->{errstr} and not $force ) {  				return ( 1, $status->{errstr} );  			} +			if ( $dep_eva and $dep_eva != $user->{dep_eva} ) { +				return ( 0, 'race condition' ); +			} +			if ( $arr_eva and $arr_eva != $user->{arr_eva} ) { +				return ( 0, 'race condition' ); +			}  			my $now     = DateTime->now( time_zone => 'Europe/Berlin' );  			my $journey = $self->in_transit->get( diff --git a/lib/Travelynx/Command/work.pm b/lib/Travelynx/Command/work.pm index 7af988c..a4a98e6 100644 --- a/lib/Travelynx/Command/work.pm +++ b/lib/Travelynx/Command/work.pm @@ -91,6 +91,8 @@ sub run {  						$self->app->checkout(  							station => $arr,  							force   => 1, +							dep_eva => $dep, +							arr_eva => $arr,  							uid     => $uid  						);  					} @@ -156,6 +158,8 @@ sub run {  					$self->app->checkout(  						station => $arr,  						force   => 0, +						dep_eva => $dep, +						arr_eva => $arr,  						uid     => $uid  					);  				} @@ -167,6 +171,8 @@ sub run {  				my ( undef, $error ) = $self->app->checkout(  					station => $arr,  					force   => 1, +					dep_eva => $dep, +					arr_eva => $arr,  					uid     => $uid  				);  				if ($error) { | 
