X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fio-layer%2Fsockets.c;h=c068f06281d7794ba5f88e7058b10a59a00883cc;hb=5b558abeeb255a3179d4ca6a85617e051c6abd38;hp=2a88bd49ed7a7ea0a10abdd5be36a88a3f65114c;hpb=92f60fbffa1187be7dedf6a9286b5c35b2082815;p=mono.git diff --git a/mono/io-layer/sockets.c b/mono/io-layer/sockets.c index 2a88bd49ed7..c068f06281d 100644 --- a/mono/io-layer/sockets.c +++ b/mono/io-layer/sockets.c @@ -7,9 +7,10 @@ * (C) 2002 Ximian, Inc. */ +#include + #ifndef DISABLE_SOCKETS -#include #include #include #include @@ -716,15 +717,15 @@ int _wapi_send(guint32 fd, const void *msg, size_t len, int send_flags) g_message ("%s: send error: %s", __func__, strerror (errno)); #endif +#ifdef O_NONBLOCK /* At least linux returns EAGAIN/EWOULDBLOCK when the timeout has been set on * a blocking socket. See bug #599488 */ if (errnum == EAGAIN) { - gboolean nonblock; - - ret = ioctlsocket (fd, FIONBIO, (gulong *) &nonblock); - if (ret != SOCKET_ERROR && !nonblock) + ret = fcntl (fd, F_GETFL, 0); + if (ret != -1 && (ret & O_NONBLOCK) == 0) errnum = ETIMEDOUT; } +#endif /* O_NONBLOCK */ errnum = errno_to_WSA (errnum, __func__); WSASetLastError (errnum);