Summary
Clarifies the behaviour of the setSoTimeout() method when given a negative timeout value.
Problem
With this option set to a non-zero timeout, a call to receive() for this DatagramSocket will block for the specified time. Any value less than zero is invalid, and as such, should throw an IllegalArgumentException. However, setSoTimeout() does not specify what happens if given a negative timeout value.
Solution
The solution is to document that a negative timeout value will result in an IllegalArgumentException being thrown. As the setSoTimeout() method already throws an IllegalArgumentException, this change is effectively documenting existing long-standing behaviour.
However, an explicit check on negative values will now be made in the setSoTimeout() method to avoid dependence on implementation for such a check to occur.
Specification
src/java.base/share/classes/java/net/DatagramSocket.java
*
* @param timeout the specified timeout in milliseconds.
* @throws SocketException if there is an error in the underlying protocol, such as an UDP error.
+ * @throws IllegalArgumentException if {@code timeout} is negative
* @since 1.1
* @see #getSoTimeout()
*/
public synchronized void setSoTimeout(int timeout) throws SocketException {... }
Webrev: http://cr.openjdk.java.net/~pconcannon/8222829/webrevs/webrev.02/
- csr of
-
JDK-8222829 DatagramSocket.setSoTimeout does not specify IAE when timeout is negative
-
- Closed
-
- relates to
-
JDK-8231719 Correct contradictions in timeout range descriptions
-
- Resolved
-
-
JDK-8221248 Specify behaviour of timeout accepting methods of Socket and ServerSocket if timeout is negative
-
- Closed
-