From 1b902f7defa9f5229f92dfb32406c5b30c8045ab Mon Sep 17 00:00:00 2001 From: Alon Levy Date: Thu, 22 Mar 2012 19:44:49 +0200 Subject: libcacard/vcard_emul_nss: don't stop thread when there are no slots Signed-off-by: Alon Levy --- libcacard/vcard_emul_nss.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'libcacard') diff --git a/libcacard/vcard_emul_nss.c b/libcacard/vcard_emul_nss.c index bdc3c79462..7de5d5b5a7 100644 --- a/libcacard/vcard_emul_nss.c +++ b/libcacard/vcard_emul_nss.c @@ -682,8 +682,19 @@ vcard_emul_event_thread(void *arg) SECMODModule *module = (SECMODModule *)arg; do { + /* + * XXX - the latency value doesn't matter one bit. you only get no + * blocking (flags |= CKF_DONT_BLOCK) or PKCS11_WAIT_LATENCY (==500), + * hard coded in coolkey. And it isn't coolkey's fault - the timeout + * value we pass get's dropped on the floor before C_WaitForSlotEvent + * is called. + */ slot = SECMOD_WaitForAnyTokenEvent(module, 0, 500); if (slot == NULL) { + /* this could be just a no event indication */ + if (PORT_GetError() == SEC_ERROR_NO_EVENT) { + continue; + } break; } vreader = vcard_emul_find_vreader_from_slot(slot); -- cgit v1.2.1