- my $r = $self->_run_ykpers(\@cmd, {
- (0 < $timeout ? (timeout => $timeout) : ()),
- terminate_on_parent_sudden_death => 1,
- });
-
- my $exit_code = $r->{exit_code};
- if ($exit_code != 0) {
- my $err = $r->{stderr};
- chomp $err;
- my $yk_errno = _yk_errno($err);
- return if $yk_errno == YK_ENOKEY;
- if ($yk_errno == YK_EWOULDBLOCK && ++$try <= 3) {
- sleep 0.1;
- goto TRY;
+ {
+ $r = $self->_run_ykpers(\@cmd, {
+ (0 < $timeout ? (timeout => $timeout) : ()),
+ terminate_on_parent_sudden_death => 1,
+ });
+
+ my $exit_code = $r->{exit_code};
+ if ($exit_code != 0) {
+ my $err = $r->{stderr};
+ chomp $err;
+ my $yk_errno = _yk_errno($err);
+ return if $yk_errno == YK_ENOKEY;
+ if ($yk_errno == YK_EWOULDBLOCK && ++$try <= $RETRY_COUNT) {
+ sleep $RETRY_INTERVAL;
+ goto TRY;
+ }
+ alert 'Failed to get YubiKey device info: ' . ($err ? $err : 'Something happened'),
+ error => $err,
+ yk_errno => $yk_errno || 0;
+ return;