Browse Source

Make SetNonBlock and SetSockFlags work on FDs instead of sockets

However, don't use _get_osfhandle in Close()
v0.7.4-release
Bert Belder 14 years ago
parent
commit
51300f36d6
  1. 5
      src/node_net.cc

5
src/node_net.cc

@ -96,7 +96,7 @@ static inline bool SetCloseOnExec(int fd) {
static inline bool SetNonBlock(int fd) { static inline bool SetNonBlock(int fd) {
#ifdef __MINGW32__ #ifdef __MINGW32__
unsigned long value = 1; unsigned long value = 1;
return (ioctlsocket(fd, FIONBIO, &value)); return (ioctlsocket(_get_osfhandle(fd), FIONBIO, &value) == 0);
#else // __POSIX__ #else // __POSIX__
return (fcntl(fd, F_SETFL, O_NONBLOCK) != -1); return (fcntl(fd, F_SETFL, O_NONBLOCK) != -1);
#endif #endif
@ -106,7 +106,7 @@ static inline bool SetNonBlock(int fd) {
static inline bool SetSockFlags(int fd) { static inline bool SetSockFlags(int fd) {
#ifdef __MINGW32__ #ifdef __MINGW32__
int flags = 1; int flags = 1;
setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (const char *)&flags, sizeof(flags)); setsockopt(_get_osfhandle(fd), SOL_SOCKET, SO_REUSEADDR, (const char *)&flags, sizeof(flags));
return SetNonBlock(fd); return SetNonBlock(fd);
#else // __POSIX__ #else // __POSIX__
int flags = 1; int flags = 1;
@ -340,6 +340,7 @@ static Handle<Value> Close(const Arguments& args) {
FD_ARG(args[0]) FD_ARG(args[0])
// Windows: don't use _get_osfhandle here!
if (0 > close(fd)) { if (0 > close(fd)) {
return ThrowException(ErrnoException(errno, "close")); return ThrowException(ErrnoException(errno, "close"));
} }

Loading…
Cancel
Save