Allow keep trying if SCard service is unavailable
This commit is contained in:
@@ -10,17 +10,24 @@ inherits(CardReader, EventEmitter);
|
|||||||
|
|
||||||
function parseReadersString(buffer) {
|
function parseReadersString(buffer) {
|
||||||
|
|
||||||
const string = buffer.toString().slice(0, -1);
|
try {
|
||||||
|
|
||||||
// it looks like
|
const string = buffer.toString().slice(0, -1);
|
||||||
// ACS ACR122U PICC Interface\u0000ACS ACR122U PICC Interface 01\u0000\u0000
|
|
||||||
// [reader_name]\u0000[reader_name]\u0000\u0000
|
|
||||||
// ^separator ^separator^end_separator
|
|
||||||
|
|
||||||
// returns readers in array
|
// it looks like
|
||||||
// like [ 'ACS ACR122U PICC Interface', 'ACS ACR122U PICC Interface 01' ]
|
// ACS ACR122U PICC Interface\u0000ACS ACR122U PICC Interface 01\u0000\u0000
|
||||||
|
// [reader_name]\u0000[reader_name]\u0000\u0000
|
||||||
|
// ^separator ^separator^end_separator
|
||||||
|
|
||||||
return string.split('\u0000').slice(0, -1);
|
// returns readers in array
|
||||||
|
// like [ 'ACS ACR122U PICC Interface', 'ACS ACR122U PICC Interface 01' ]
|
||||||
|
|
||||||
|
return string.split('\u0000').slice(0, -1);
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -287,6 +287,11 @@ LONG PCSCLite::get_card_readers(PCSCLite* pcsclite, AsyncResult* async_result) {
|
|||||||
result = get_card_readers(pcsclite, async_result);
|
result = get_card_readers(pcsclite, async_result);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
if (result == SCARD_E_NO_SERVICE || result == SCARD_E_SERVICE_STOPPED) {
|
||||||
|
SCardReleaseContext(pcsclite->m_card_context);
|
||||||
|
SCardEstablishContext(SCARD_SCOPE_SYSTEM, NULL, NULL, &pcsclite->m_card_context);
|
||||||
|
result = get_card_readers(pcsclite, async_result);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
/* Store the readers_name in the baton */
|
/* Store the readers_name in the baton */
|
||||||
async_result->readers_name = readers_name;
|
async_result->readers_name = readers_name;
|
||||||
|
|||||||
Reference in New Issue
Block a user