]> granicus.if.org Git - python/commitdiff
Use O_NONBLOCK rather than O_NDELAY, so we get POSIX non-blocking I/O.
authorNeal Norwitz <nnorwitz@gmail.com>
Sat, 2 Nov 2002 19:55:21 +0000 (19:55 +0000)
committerNeal Norwitz <nnorwitz@gmail.com>
Sat, 2 Nov 2002 19:55:21 +0000 (19:55 +0000)
On HPUX, Solaris, Tru64 (Dec UNIX), and IRIX (I think),
O_NONBLOCK is the POSIX version of non-blocking I/O
which is what we want.

On Linux and FreeBSD (at least), O_NONBLOCK and O_NDELAY are the same.
So this change should have no negative effect on those platforms.

Tested on Linux, Solaris, HPUX.

Thanks to Anders Qvist for diagnosing this problem.

Modules/socketmodule.c

index bdeddea0c71934711669159f03c386edd471abda..2afa69769eeb0bef93c0fa262000cd16844798b8 100644 (file)
@@ -211,8 +211,8 @@ int h_errno; /* not used */
 # define offsetof(type, member)        ((size_t)(&((type *)0)->member))
 #endif
 
-#ifndef O_NDELAY
-# define O_NDELAY O_NONBLOCK   /* For QNX only? */
+#ifndef O_NONBLOCK
+# define O_NONBLOCK O_NDELAY
 #endif
 
 #include "addrinfo.h"
@@ -488,9 +488,9 @@ internal_setblocking(PySocketSockObject *s, int block)
 #else /* !PYOS_OS2 */
        delay_flag = fcntl(s->sock_fd, F_GETFL, 0);
        if (block)
-               delay_flag &= (~O_NDELAY);
+               delay_flag &= (~O_NONBLOCK);
        else
-               delay_flag |= O_NDELAY;
+               delay_flag |= O_NONBLOCK;
        fcntl(s->sock_fd, F_SETFL, delay_flag);
 #endif /* !PYOS_OS2 */
 #else /* MS_WINDOWS */