[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