From ef24dc91714bcb2b7e097b579148fcce922710c9 Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Wed, 12 Feb 2014 16:14:38 +0100 Subject: [PATCH] added timeout to 3s for librfid tools --- lib/Biblio/RFID/Reader/librfid.pm | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/Biblio/RFID/Reader/librfid.pm b/lib/Biblio/RFID/Reader/librfid.pm index 0f559fd..a72395e 100644 --- a/lib/Biblio/RFID/Reader/librfid.pm +++ b/lib/Biblio/RFID/Reader/librfid.pm @@ -44,6 +44,13 @@ sub init { 1 } sub _grep_tool { my ( $bin, $param, $coderef, $path ) = @_; + my $timeout = 3; # s + + eval { + + local $SIG{ALRM} = sub { die "timeout\n" }; + alarm $timeout; + warn "# _grep_tool $bin $param\n"; open(my $s, '-|', "$bin $param 2>/dev/null") || die $!; @@ -65,8 +72,12 @@ sub _grep_tool { $coderef->( $sid, $iso ); } + alarm(0); close($s); - if ( $? >> 8 ) { + + }; # eval + + if ( $? >> 8 || $@ ) { my $lsusb = `lsusb -d 076b:`; if ( $lsusb =~ m/\S+\s+(\d+)\s+\S+\s+(\d+)/ ) { my $cmd = "usbreset /dev/bus/usb/$1/$2"; -- 2.20.1