< prev index next >
src/java.base/unix/native/libnio/ch/IOUtil.c
Print this page
rev 50258 : [mq]: 8203369-Check-for-both-EAGAIN-and-EWOULDBLOCK-error-codes
*** 118,128 ****
int tn = 0;
for (;;) {
int n = read(fd, buf, sizeof(buf));
tn += n;
! if ((n < 0) && (errno != EAGAIN))
JNU_ThrowIOExceptionWithLastError(env, "Drain");
if (n == (int)sizeof(buf))
continue;
return (tn > 0) ? JNI_TRUE : JNI_FALSE;
}
--- 118,128 ----
int tn = 0;
for (;;) {
int n = read(fd, buf, sizeof(buf));
tn += n;
! if ((n < 0) && (errno != EAGAIN && errno != EWOULDBLOCK))
JNU_ThrowIOExceptionWithLastError(env, "Drain");
if (n == (int)sizeof(buf))
continue;
return (tn > 0) ? JNI_TRUE : JNI_FALSE;
}
*** 134,144 ****
int res;
char buf[1];
res = read(fd, buf, 1);
if (res < 0) {
! if (errno == EAGAIN) {
res = 0;
} else if (errno == EINTR) {
return IOS_INTERRUPTED;
} else {
JNU_ThrowIOExceptionWithLastError(env, "read");
--- 134,144 ----
int res;
char buf[1];
res = read(fd, buf, 1);
if (res < 0) {
! if (errno == EAGAIN || errno == EWOULDBLOCK) {
res = 0;
} else if (errno == EINTR) {
return IOS_INTERRUPTED;
} else {
JNU_ThrowIOExceptionWithLastError(env, "read");
*** 185,195 ****
return IOS_EOF; /* EOF is -1 in javaland */
} else {
return 0;
}
}
! else if (errno == EAGAIN)
return IOS_UNAVAILABLE;
else if (errno == EINTR)
return IOS_INTERRUPTED;
else {
const char *msg = reading ? "Read failed" : "Write failed";
--- 185,195 ----
return IOS_EOF; /* EOF is -1 in javaland */
} else {
return 0;
}
}
! else if (errno == EAGAIN || errno == EWOULDBLOCK)
return IOS_UNAVAILABLE;
else if (errno == EINTR)
return IOS_INTERRUPTED;
else {
const char *msg = reading ? "Read failed" : "Write failed";
*** 210,220 ****
return IOS_EOF; /* EOF is -1 in javaland */
} else {
return 0;
}
}
! else if (errno == EAGAIN)
return IOS_UNAVAILABLE;
else if (errno == EINTR)
return IOS_INTERRUPTED;
else {
const char *msg = reading ? "Read failed" : "Write failed";
--- 210,220 ----
return IOS_EOF; /* EOF is -1 in javaland */
} else {
return 0;
}
}
! else if (errno == EAGAIN || errno == EWOULDBLOCK)
return IOS_UNAVAILABLE;
else if (errno == EINTR)
return IOS_INTERRUPTED;
else {
const char *msg = reading ? "Read failed" : "Write failed";
< prev index next >