Index: modules/luni/src/main/native/luni/shared/OSNetworkSystem.c =================================================================== --- modules/luni/src/main/native/luni/shared/OSNetworkSystem.c (revision 542798) +++ modules/luni/src/main/native/luni/shared/OSNetworkSystem.c (working copy) @@ -868,7 +868,7 @@ } do { - result = hysock_select_read (hysocketP, 0, 1, FALSE); + result = hysock_select_read (hysocketP, 0, 0, TRUE); if (HYPORT_ERROR_SOCKET_TIMEOUT == result) { Index: modules/portlib/src/main/native/port/windows/hysock.c =================================================================== --- modules/portlib/src/main/native/port/windows/hysock.c (revision 542798) +++ modules/portlib/src/main/native/port/windows/hysock.c (working copy) @@ -2697,7 +2697,7 @@ * Is this valid on a 64bit platform? */ - if (0 == secTime && 0 == uSecTime) + if (0 == secTime && 0 == uSecTime && !accept) { /* add these checks, so that if only one socket is open return right away and avoid the loop below */ if (((hysocketP->flags & SOCKET_IPV4_OPEN_MASK) != 0) @@ -2742,8 +2742,7 @@ } /* break out of the loop if we should not be looping (timeout is zero) or * if an error occured or data ready to be read */ - if ((HYPORT_ERROR_SOCKET_TIMEOUT != result) || (0 != secTime) - || (0 != uSecTime)) + if ((HYPORT_ERROR_SOCKET_TIMEOUT != result) || ((0 == secTime) && (0 == uSecTime))) { /* check which socket has activity after select call and set the appropriate flags */ if (FD_ISSET (hysocketP->ipv6, ptBuffers->fdset))