Apple Bug probably resolved with retry to reconnect with SCARD_LEAVE_CARD; refs #34

This commit is contained in:
Marc Wäckerlin
2014-12-01 10:27:23 +00:00
parent 52c2c959a2
commit e2e95cbc87

View File

@@ -327,18 +327,21 @@ namespace pcsc {
"Retry Nr. "<<cnt);
try {
reconnect();
check(SCardTransmit(_id, &rPci,
(LPCBYTE)in.c_str(),
in.size(),
0, buff, &len),
"smartcard transmit resend message "+crypto::hex(in));
if (check(SCardTransmit(_id, &rPci,
(LPCBYTE)in.c_str(),
in.size(),
0, buff, &len),
"smartcard transmit resend message "
+crypto::hex(in))) {
CRYPTOLOG("successful after retry nr. "<<cnt);
return std::string((char*)buff, len);
}
} catch (std::exception& x) {
CRYPTOLOG("failed with "<<x.what());
continue; // try again
CRYPTOLOG("failed again with "<<x.what());
}
break; // success
}
# endif
CRYPTOLOG("definitely failed with "<<x.what());
throw; // just rethrow otherwise
}
//CRYPTOLOG(" -> "<<crypto::hex(std::string((char*)buff, len)));