< 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 >