[Pcsclite-cvs-commit] r6441 - /trunk/PCSC/src/winscard_msg.c

rousseau at users.alioth.debian.org rousseau at users.alioth.debian.org
Fri Aug 24 07:42:06 UTC 2012


Author: rousseau
Date: Fri Aug 24 07:42:05 2012
New Revision: 6441

URL: http://svn.debian.org/wsvn/pcsclite/?sc=1&rev=6441
Log:
ClientSetupSession(): use fcntl() to make the socket non blocking

ioctl(fd, FIONBIO. ...) is not the standard way of marking sockets and
other objects nonblocking, fcntl(fd, F_SETFL, flags | O_NONBLOCK) is.

Signed-off-by: Dmitry Torokhov <dtor at vmware.com>

Modified:
    trunk/PCSC/src/winscard_msg.c

Modified: trunk/PCSC/src/winscard_msg.c
URL: http://svn.debian.org/wsvn/pcsclite/trunk/PCSC/src/winscard_msg.c?rev=6441&op=diff
==============================================================================
--- trunk/PCSC/src/winscard_msg.c (original)
+++ trunk/PCSC/src/winscard_msg.c Fri Aug 24 07:42:05 2012
@@ -90,7 +90,6 @@
 INTERNAL int ClientSetupSession(uint32_t *pdwClientID)
 {
 	struct sockaddr_un svc_addr;
-	int one;
 	int ret;
 	char *socketName;
 
@@ -116,8 +115,16 @@
 		return -1;
 	}
 
-	one = 1;
-	if (ioctl(*pdwClientID, FIONBIO, &one) < 0)
+	ret = fcntl(*pdwClientID, F_GETFL, 0);
+	if (ret < 0)
+	{
+		Log3(PCSC_LOG_CRITICAL, "Error: cannot retrieve socket %s flags: %s",
+			socketName, strerror(errno));
+		(void)close(*pdwClientID);
+		return -1;
+	}
+
+	if (fcntl(*pdwClientID, F_SETFL, ret | O_NONBLOCK) < 0)
 	{
 		Log3(PCSC_LOG_CRITICAL, "Error: cannot set socket %s nonblocking: %s",
 			socketName, strerror(errno));




More information about the Pcsclite-cvs-commit mailing list