RFR: 8231260: (dc) DatagramChannel::disconnect changes the port of the local address to 0 (lnx)
mark sheppard
macanaoire at hotmail.com
Wed Oct 9 09:44:00 UTC 2019
OK Alan, Daniel thanks for the feedback and consideration … but what you say does lend an argument that
localAddress = null; rather than localAddress = isa;
is a reasonable value in the event of Net.bind throwing a BindException
but, as you have said, that may have other implications
leaving my dead donkey well and truly flogged!!
an influencing (rhetorical) question is
how soon is a port available for re-allocation/re-use after it has been released by the OS on Linux?
with connected TCP sockets it would expected to be the TTL setting … not sure about a connected UDP socket!
Would it be instantaneously available after its release by the kernel, or subject to TTL lifetime?
best regards
Mark
________________________________
From: Daniel Fuchs <daniel.fuchs at oracle.com>
Sent: Tuesday 8 October 2019 14:40
To: Alan Bateman <Alan.Bateman at oracle.com>; mark sheppard <macanaoire at hotmail.com>; nio-dev <nio-dev at openjdk.java.net>
Cc: OpenJDK Network Dev list <net-dev at openjdk.java.net>
Subject: Re: RFR: 8231260: (dc) DatagramChannel::disconnect changes the port of the local address to 0 (lnx)
On 08/10/2019 15:29, Alan Bateman wrote:
> On 08/10/2019 15:20, mark sheppard wrote:
>> :
>>
>> Q: is localAddress.getPort() == 0 indicative that the
>> DatagramChannel is unbound ?
>>
> getLocalAddress() returns a SocketAddress when bound, it returns null
> when not bound. I don't think we should get too hung up on corner case
> that arises when the local port cannot be restored (by re-binding). The
> javadoc sets the expectations that the channel's socket is in an
> undefined state when disconnect fails.
+1 : you would be in uncharted territory and that's exactly why
we want to throw an exception when rebind fails and why we recommend
closing the channel when that happens.
-- daniel
>
> -Alan.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/net-dev/attachments/20191009/365799f6/attachment-0001.html>
More information about the net-dev
mailing list