[Pcsclite-cvs-commit] r4845 - /trunk/PCSC/src/winscard_clnt.c

rousseau at users.alioth.debian.org rousseau at users.alioth.debian.org
Tue Mar 30 07:54:43 UTC 2010


Author: rousseau
Date: Tue Mar 30 07:54:42 2010
New Revision: 4845

URL: http://svn.debian.org/wsvn/pcsclite/?sc=1&rev=4845
Log:
SCardEstablishContext(): try to relaunch pcscd if
SCardCheckDaemonAvailability() succeeds but SCardEstablishContextTH()
fails. This happens if pcscd crashed without cleaning
/var/run/pcscd/pcscd.comm

Modified:
    trunk/PCSC/src/winscard_clnt.c

Modified: trunk/PCSC/src/winscard_clnt.c
URL: http://svn.debian.org/wsvn/pcsclite/trunk/PCSC/src/winscard_clnt.c?rev=4845&op=diff
==============================================================================
--- trunk/PCSC/src/winscard_clnt.c (original)
+++ trunk/PCSC/src/winscard_clnt.c Tue Mar 30 07:54:42 2010
@@ -400,6 +400,7 @@
 
 	if (SCARD_E_NO_SERVICE == rv)
 	{
+launch:
 		if (daemon_launched)
 		{
 			retries++;
@@ -451,6 +452,15 @@
 	rv = SCardEstablishContextTH(dwScope, pvReserved1,
 		pvReserved2, phContext);
 	(void)SCardUnlockThread();
+
+	/* SCardEstablishContextTH may fail if the previous pcscd crashed
+	 * without cleaning /var/run/pcscd/pcscd.comm */
+	if (SCARD_E_NO_SERVICE == rv)
+	{
+		retries++;
+		if (retries <= 1)
+			goto launch;
+	}
 
 end:
 	PROFILE_END(rv)




More information about the Pcsclite-cvs-commit mailing list