Browse Source

Make SetNonBlock and SetSockFlags work on mingw

v0.7.4-release
Bert Belder 14 years ago
parent
commit
7a1917d86f
  1. 11
      src/node_net.cc

11
src/node_net.cc

@ -74,14 +74,25 @@ static inline bool SetCloseOnExec(int fd) {
static inline bool SetNonBlock(int fd) { static inline bool SetNonBlock(int fd) {
#ifdef __MINGW32__
unsigned long value = 1;
return (ioctlsocket(fd, FIONBIO, &value));
#else // __POSIX__
return (fcntl(fd, F_SETFL, O_NONBLOCK) != -1); return (fcntl(fd, F_SETFL, O_NONBLOCK) != -1);
#endif
} }
static inline bool SetSockFlags(int fd) { static inline bool SetSockFlags(int fd) {
#ifdef __MINGW32__
int flags = 1;
setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (const char *)&flags, sizeof(flags));
return SetNonBlock(fd);
#else // __POSIX__
int flags = 1; int flags = 1;
setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (void *)&flags, sizeof(flags)); setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (void *)&flags, sizeof(flags));
return SetNonBlock(fd) && SetCloseOnExec(fd); return SetNonBlock(fd) && SetCloseOnExec(fd);
#endif
} }

Loading…
Cancel
Save