diff --git a/package.json b/package.json index dad5d95..c72eef0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@pokusew/pcsclite", - "version": "0.6.0", + "version": "0.6.1", "description": "Bindings over PC/SC to access Smart Cards", "keywords": [ "nfc", diff --git a/src/pcsclite.cpp b/src/pcsclite.cpp index dd66881..4460af3 100644 --- a/src/pcsclite.cpp +++ b/src/pcsclite.cpp @@ -69,13 +69,18 @@ PCSCLite::PCSCLite(): m_card_context(0), LONG result; // TODO: consider removing this do-while Windows workaround that should not be needed anymore + INT retry = 0; do { + if (retry > 0) { + Sleep(100 * retry); + } + // TODO: make dwScope (now hard-coded to SCARD_SCOPE_SYSTEM) customisable result = SCardEstablishContext(SCARD_SCOPE_SYSTEM, 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) && retry++ < 3); if (result != SCARD_S_SUCCESS) { Nan::ThrowError(error_msg("SCardEstablishContext", result).c_str()); } else {