Limit the number of connection attempts to avoid endless looping

Non-windows platforms, where the service is not auto-activated,
will endless loop until the smartcard service is started. Limit
the number of attempts to avoid this.

Signed-off-by: Stefan Knoblich <stkn@bitplumber.de>
This commit is contained in:
Stefan Knoblich
2021-04-21 15:59:26 +02:00
parent 8722e9c6f6
commit dc660a03e8

View File

@@ -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 {