Re: RFR[8243507]: 'DatagramSocket constructors don’t always specify what happens when passed invalid parameters'

Patrick Concannon patrick.concannon at oracle.com
Wed Apr 29 20:08:29 UTC 2020


Hi Daniel and Mark,


WRT what happens when `laddr` is null: it has been filed as a separate 
issue, i.e. JDK-8243999 
<https://bugs.openjdk.java.net/browse/JDK-8243999>, and has been 
assigned to me.
Thanks for the wording suggestions, Mark. I will take a closer look once 
this patch is out of the way.

Daniel:Thanks for your suggestions. Well spotted with regards to the 
port. I've incorporated your comments into the patch, and you can find 
them in the new webrev below.


webrev: http://cr.openjdk.java.net/~pconcannon/8243507/webrevs/webrev.01/


Kind regards,

Patrick


On 29/04/2020 14:57, mark sheppard wrote:
>
> Hi Daniel, Patrick,
>     I wonder is there an opportunity here to refine the constructor 
> descriptions a
> little, also
>
> The wording associated with wildcard addressing includes
> * an IP address chosen by the kernel.
> which is not actually correct, and maybe it should be omitted from
> the various constructor descriptions.
>
> there is explicit reference to IPv4 INADDR_ANY (0.0.0.0) which may warrant
> a rewording to more general wildcard address {@link 
> InetAddress#isAnyLocalAddress}
>
> I think the following wording was proposed offline
> changing
>
> * If the IP address is 0.0.0.0, the socket will be bound to the
>
> * {@link InetAddress#isAnyLocalAddress wildcard} address,
>
> * an IP address chosen by the kernel.
>
>
> to
>
>
> * If the IP address is a {@link InetAddress#isAnyLocalAddress 
> wildcard} address
>
> * (or is {@code null}), the socket will be bound to the wildcard address.
>
>
> also changing
>
> The socket will be bound to the
>
> {@link InetAddress#isAnyLocalAddress wildcard} address,
>
> an IP address chosen by the kernel.
>
>
> to
>
>
> The socket will be bound to the
>
> {@link InetAddress#isAnyLocalAddress wildcard} address.
>
>
>
> best regards
> Mark
>
>
>
> ------------------------------------------------------------------------
> *From:* net-dev <net-dev-bounces at openjdk.java.net> on behalf of Daniel 
> Fuchs <daniel.fuchs at oracle.com>
> *Sent:* Tuesday 28 April 2020 15:32
> *To:* Patrick Concannon <patrick.concannon at oracle.com>; OpenJDK 
> Network Dev list <net-dev at openjdk.java.net>
> *Subject:* Re: RFR[8243507]: 'DatagramSocket constructors don’t always 
> specify what happens when passed invalid parameters'
> Hi Patrick,
>
> Looks good to me.
> I realize we haven't specified what happens if the `laddr` is null.
> Are you planning to fix that in a separate changeset or tag it to
> this one?
>
> Maybe we should unify the description of the `port` parameter in
> the two constructors:
>
>   327      * @param      port port to use.
>   357      * @param port local port to use
>
> Maybe:
>
>            * @param port local port to use in the bind operation.
>
> Nit: It's customary to break line before <p>:
>
>   343      * address.  <p><a id="PortRange"></a>The local port must be
> between 0 and
>
> suggest:
>
>   343      * address.
>            * <p><a id="PortRange"></a>The local port must be
>
> best regards,
>
> -- daniel
>
> On 28/04/2020 10:33, Patrick Concannon wrote:
> > Hi,
> >
> > Could someone please review my fix for JDK-8243507 'DatagramSocket
> > constructors don’t always specify what happens when passed invalid
> > parameters'?
> >
> > Currently, the DatagramSocket constructor `DatagramSocket(SocketAddress
> > bindaddr)` doesn't specify what happens if passed a SocketAddress
> > subclass not supported by this socket.
> > Also, there are two DatagramSocket constructors that accept a port
> > number, but neither constructor specifies what happens when passed port
> > 0, or a port which falls outside of the valid range of port numbers i.e
> > between 0 and 65535 inclusive.
> >
> > This fix updates the spec for each these constructors to inform the 
> user
> > of what happens when passed an invalid argument. For the constructors
> > that take a port, the spec will now specify that an
> > IllegalArgumentException is thrown when passed a port outside of the
> > acceptable range, or, if zero is passed, that the system will choose an
> > appropriate port for them. For the constructor that takes a
> > SocketAddress, an IllegalArgumentException will be thrown if an invalid
> > SocketAddress subclass is passed as a parameter.
> >
> > bug: https://bugs.openjdk.java.net/browse/JDK-8243507
> > csr: https://bugs.openjdk.java.net/browse/JDK-8243976
> > webrev: 
> http://cr.openjdk.java.net/~pconcannon/8243507/webrevs/webrev.00/
> >
> >
> > Kind regards,
> >
> > Patrick
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/net-dev/attachments/20200429/fdebf685/attachment.htm>


More information about the net-dev mailing list