diff options
author | bryce <bryce@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-08-07 01:13:46 +0000 |
---|---|---|
committer | bryce <bryce@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-08-07 01:13:46 +0000 |
commit | 7c00f3facc343ea4c141bd3e2c94ff7b6489eb81 (patch) | |
tree | 0663d033ddf9ad5a8fd25a8dd8f844c58ce3875d /libjava | |
parent | 74711ad99a9adf667ada63802a775559f59aab25 (diff) | |
download | gcc-7c00f3facc343ea4c141bd3e2c94ff7b6489eb81.tar.gz |
* java/net/natPlainSocketImplPosix.cc (connect): Pass the FD as a
ready-to-write argument to _Jv_Select. Reset the socket back to
non-blocking state after connecting.
(accept): Pass the FD as a ready-to-write argument to _Jv_Select.
Throw SocketTimeoutException not InterruptedIOException.
(read): Throw SocketTimeoutException not InterruptedIOException.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@70217 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava')
-rw-r--r-- | libjava/ChangeLog | 10 | ||||
-rw-r--r-- | libjava/java/net/natPlainSocketImplPosix.cc | 31 |
2 files changed, 26 insertions, 15 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 04307791bde..e773c70c6f0 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,13 @@ +2003-08-07 Jacob Gladish <gladish@spinnakernet.com> + Bryce McKinlay <bryce@mckinlay.net.nz> + + * java/net/natPlainSocketImplPosix.cc (connect): Pass the FD as a + ready-to-write argument to _Jv_Select. Reset the socket back to + non-blocking state after connecting. + (accept): Pass the FD as a ready-to-write argument to _Jv_Select. + Throw SocketTimeoutException not InterruptedIOException. + (read): Throw SocketTimeoutException not InterruptedIOException. + 2003-08-07 Bryce McKinlay <bryce@mckinlay.net.nz> * java/lang/Thread.java (Thread): Check for null "name" from diff --git a/libjava/java/net/natPlainSocketImplPosix.cc b/libjava/java/net/natPlainSocketImplPosix.cc index 65feac87324..f2a71b68a02 100644 --- a/libjava/java/net/natPlainSocketImplPosix.cc +++ b/libjava/java/net/natPlainSocketImplPosix.cc @@ -174,19 +174,21 @@ java::net::PlainSocketImpl::connect (java::net::SocketAddress *addr, if ((_Jv_connect (fnum, ptr, len) != 0) && (errno != EINPROGRESS)) goto error; - fd_set rset; + fd_set fset; struct timeval tv; - FD_ZERO(&rset); - FD_SET(fnum, &rset); + FD_ZERO(&fset); + FD_SET(fnum, &fset); tv.tv_sec = timeout / 1000; tv.tv_usec = (timeout % 1000) * 1000; int retval; - if ((retval = _Jv_select (fnum + 1, &rset, NULL, NULL, &tv)) < 0) + if ((retval = _Jv_select (fnum + 1, &fset, &fset, NULL, &tv)) < 0) goto error; else if (retval == 0) throw new java::net::SocketTimeoutException (JvNewStringUTF ("Connect timed out")); + // Set the socket back into a blocking state. + ::fcntl (fnum, F_SETFL, flags); } else { @@ -233,17 +235,17 @@ java::net::PlainSocketImpl::accept (java::net::PlainSocketImpl *s) // Do timeouts via select since SO_RCVTIMEO is not always available. if (timeout > 0 && fnum >= 0 && fnum < FD_SETSIZE) { - fd_set rset; + fd_set fset; struct timeval tv; - FD_ZERO(&rset); - FD_SET(fnum, &rset); + FD_ZERO(&fset); + FD_SET(fnum, &fset); tv.tv_sec = timeout / 1000; tv.tv_usec = (timeout % 1000) * 1000; int retval; - if ((retval = _Jv_select (fnum + 1, &rset, NULL, NULL, &tv)) < 0) + if ((retval = _Jv_select (fnum + 1, &fset, &fset, NULL, &tv)) < 0) goto error; else if (retval == 0) - throw new java::io::InterruptedIOException ( + throw new java::net::SocketTimeoutException ( JvNewStringUTF("Accept timed out")); } @@ -402,7 +404,7 @@ java::net::PlainSocketImpl::read(void) // If select returns 0 we've waited without getting data... // that means we've timed out. if (sel_retval == 0) - throw new java::io::InterruptedIOException + throw new java::net::SocketTimeoutException (JvNewStringUTF ("read timed out") ); // If select returns ok we know we either got signalled or read some data... // either way we need to try to read. @@ -467,11 +469,10 @@ java::net::PlainSocketImpl::read(jbyteArray buffer, jint offset, jint count) // the socket to see what happened. if (sel_retval == 0) { - java::io::InterruptedIOException *iioe = - new java::io::InterruptedIOException - (JvNewStringUTF ("read interrupted")); - iioe->bytesTransferred = 0; - throw iioe; + java::net::SocketTimeoutException *timeoutException = + new java::net::SocketTimeoutException + (JvNewStringUTF ("read timed out")); + throw timeoutException; } } |