diff --git a/src/pcsclite.cpp b/src/pcsclite.cpp index dd66881..8332f6e 100644 --- a/src/pcsclite.cpp +++ b/src/pcsclite.cpp @@ -67,7 +67,7 @@ PCSCLite::PCSCLite(): m_card_context(0), postServiceCheck: #endif // _WIN32 - LONG result; + LONG result, attempt = 0; // TODO: consider removing this do-while Windows workaround that should not be needed anymore do { // TODO: make dwScope (now hard-coded to SCARD_SCOPE_SYSTEM) customisable @@ -75,7 +75,7 @@ postServiceCheck: NULL, NULL, &m_card_context); - } while(result == SCARD_E_NO_SERVICE || result == SCARD_E_SERVICE_STOPPED); + } while((result == SCARD_E_NO_SERVICE || result == SCARD_E_SERVICE_STOPPED) && ++attempt <= 10); if (result != SCARD_S_SUCCESS) { Nan::ThrowError(error_msg("SCardEstablishContext", result).c_str()); } else {