From: Bert Belder Date: Thu, 25 Nov 2010 04:03:39 +0000 (+0100) Subject: Make SetNonBlock and SetSockFlags work on FDs instead of sockets X-Git-Tag: v0.3.4~58 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=51300f36d6d09b1f51c81514fff8644df0e79eee;p=platform%2Fupstream%2Fnodejs.git Make SetNonBlock and SetSockFlags work on FDs instead of sockets However, don't use _get_osfhandle in Close() --- diff --git a/src/node_net.cc b/src/node_net.cc index 76453b6..bafae4b 100644 --- a/src/node_net.cc +++ b/src/node_net.cc @@ -96,7 +96,7 @@ static inline bool SetCloseOnExec(int fd) { static inline bool SetNonBlock(int fd) { #ifdef __MINGW32__ unsigned long value = 1; - return (ioctlsocket(fd, FIONBIO, &value)); + return (ioctlsocket(_get_osfhandle(fd), FIONBIO, &value) == 0); #else // __POSIX__ return (fcntl(fd, F_SETFL, O_NONBLOCK) != -1); #endif @@ -106,7 +106,7 @@ static inline bool SetNonBlock(int fd) { static inline bool SetSockFlags(int fd) { #ifdef __MINGW32__ 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); #else // __POSIX__ int flags = 1; @@ -340,6 +340,7 @@ static Handle Close(const Arguments& args) { FD_ARG(args[0]) + // Windows: don't use _get_osfhandle here! if (0 > close(fd)) { return ThrowException(ErrnoException(errno, "close")); }