Commit 39d22e56 authored by Neal Norwitz's avatar Neal Norwitz

Use O_NONBLOCK rather than O_NDELAY, so we get POSIX non-blocking I/O.

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.
parent e7629c85
......@@ -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 */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment