< prev index next >
src/solaris/native/java/net/PlainSocketImpl.c
Print this page
rev 13048 : 8203369: Check for both EAGAIN and EWOULDBLOCK error codes
Reviewed-by: alanb
*** 1,7 ****
/*
! * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
--- 1,7 ----
/*
! * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
*** 691,702 ****
* accept connection but ignore ECONNABORTED indicating that
* connection was eagerly accepted by the OS but was reset
* before accept() was called.
*
* If accept timeout in place and timeout is adjusted with
! * each ECONNABORTED or EWOULDBLOCK to ensure that semantics
! * of timeout are preserved.
*/
for (;;) {
int ret;
/* first usage pick up current time */
--- 691,702 ----
* accept connection but ignore ECONNABORTED indicating that
* connection was eagerly accepted by the OS but was reset
* before accept() was called.
*
* If accept timeout in place and timeout is adjusted with
! * each ECONNABORTED or EWOULDBLOCK or EAGAIN to ensure that
! * semantics of timeout are preserved.
*/
for (;;) {
int ret;
/* first usage pick up current time */
*** 736,751 ****
if (newfd >= 0) {
SET_BLOCKING(newfd);
break;
}
! /* non (ECONNABORTED or EWOULDBLOCK) error */
! if (!(errno == ECONNABORTED || errno == EWOULDBLOCK)) {
break;
}
! /* ECONNABORTED or EWOULDBLOCK error so adjust timeout if there is one. */
if (timeout) {
jlong currTime = JVM_CurrentTimeMillis(env, 0);
timeout -= (currTime - prevTime);
if (timeout <= 0) {
--- 736,751 ----
if (newfd >= 0) {
SET_BLOCKING(newfd);
break;
}
! /* non (ECONNABORTED or EWOULDBLOCK or EAGAIN) error */
! if (!(errno == ECONNABORTED || errno == EWOULDBLOCK || errno == EAGAIN)) {
break;
}
! /* ECONNABORTED or EWOULDBLOCK or EAGAIN error so adjust timeout if there is one. */
if (timeout) {
jlong currTime = JVM_CurrentTimeMillis(env, 0);
timeout -= (currTime - prevTime);
if (timeout <= 0) {
< prev index next >