Re: RFR[8242885]: 'PlainDatagramSocketImpl doesn’t allow for the sending of IPv6 datagrams on macOS with sizes between 65508-65527 bytes'

Patrick Concannon patrick.concannon at oracle.com
Thu Jul 30 09:56:48 UTC 2020


Hi Daniel,

Thanks for your reply.

I’ve made the changes you’ve requested and you can find them in the updated webrev below.

http://cr.openjdk.java.net/~pconcannon/8242885/webrevs/webrev.02/

Kind regards,
Patrick

> On 20 Jul 2020, at 15:09, Daniel Fuchs <daniel.fuchs at oracle.com> wrote:
> 
> Hi Patrick,
> 
> test/jdk/java/net/DatagramSocket/SetGetSendBufferSize.java
> 
>  95         if(Platform.isOSX() && IPSupport.hasIPv6()) {
>  96             try (var socket = supplier.open()){
>  97                 assertTrue(socket.getSendBufferSize() >= 65507, name);
>  98             }
>  99         }
> 
> I'd suggest:
> 
>         if (Platform.isOSX()) {
>             try (var socket = supplier.open()){
>                 assertTrue(socket.getSendBufferSize() >= 65507, name);
>                 if (IPSupport.hasIPv6() && !IPSupport.preferIPv4Stack()) {
>                     assertEquals(socket.getSendBufferSize(), 65527, name);
>                 }
>             }
>         }
> 
> test/jdk/java/net/DatagramSocket/SendReceiveMaxSize.java
> 
> The test has many issues, that you should be able to fix:
> 
> a. it tests for preferIPv6Addresses, but preferIPv6Addresses is
>   always false.
> b. to be able to send a datagram of size 65527, you need three
>   things:
>      a. the socket must be a dual socket.
>         this depends on two conditions: hasIPv6 && !preferIPv4Stack
>      b. the socket must be bound to an IPv6 address
>      c. the remote address must be IPv6
> 
> I believe the test should be reworked to correctly test all these
> things - and use the right combination of -Dprefer* to have a chance
> to test all these scenarios.
> 
> 
> 
> test/jdk/java/nio/channels/DatagramChannel/SendReceiveMaxSize.java
> 
> This looks better, but `assertEquals(sendBuf, receiveBuf);`
> probably doesn't do what you think it does. Please consider
> the answers to these questions:
> 
>    1. what is the state of sendBuf at the point where you
>       call assertEquals? What are its position and limit?
>    2. same question for receiveBuf?
>    3. what does assertEquals do to check that the two buffers
>       are equals?
> 
> hope this helps,
> 
> -- daniel
> 
> On 09/07/2020 16:25, Patrick Concannon wrote:
>> Hi,
>> Sorry for the delay.
>> Alan: I’ve changed `testInitialSendBufferSize` in the test `test/java/net/DatagramSocket/SetGetSendBufferSize.java` to now check the limit when the socket is IPv6 only. I’ve also updated the tests to be end-to-end (rather than use the loopback) as requested.
>> Vyom: I’ve updated the fix to use int constants now in place of values.
>> webrev: http://cr.openjdk.java.net/~pconcannon/8242885/webrevs/webrev.01/
>> Kind regards,
>> Patrick
> 



More information about the net-dev mailing list