diff --git a/src/network/network.c b/src/network/network.c index 4615388..312fb3b 100644 --- a/src/network/network.c +++ b/src/network/network.c @@ -182,8 +182,18 @@ int net_set_nonblocking(int fd, int toggle) #ifdef WINSOCK u_long on = toggle ? 1 : 0; ret = ioctlsocket(fd, FIONBIO, &on); +#else +#ifdef __sun__ + int flags = fcntl(fd, F_GETFL, 0); + if (flags != -1) + { + if (toggle) flags |= O_NONBLOCK; + else flags &= ~O_NONBLOCK; + ret = fcntl(fd, F_SETFL, flags); + } #else ret = ioctl(fd, FIONBIO, &toggle); +#endif #endif if (ret == -1) {