On Fri, 27 Feb 2026 14:26:19 GMT, Daniel Fuchs <[email protected]> wrote:

>> src/java.net.http/share/classes/jdk/internal/net/http/quic/PeerConnectionId.java
>>  line 77:
>> 
>>> 75:         final byte[] idBytes = new byte[src.remaining()];
>>> 76:         src.get(src.position(), idBytes);
>>> 77:         return ByteBuffer.wrap(idBytes);
>> 
>> You can alternatively consider replacing these 3 lines with `return 
>> src.slice(src.position(), src.limit())`, I guess.
>
> Not exactly as that would retain the memory from the input buffer which might 
> be large (could be a slice of the whole packet).

Okay, I see — would be nice to document this in a comment. It might be me, but 
this crucial detail is very easy to miss.

>> src/java.net.http/share/classes/jdk/internal/net/http/quic/QuicConnectionImpl.java
>>  line 1949:
>> 
>>> 1947:             if (t instanceof AssertionError) {
>>> 1948:                 
>>> this.terminator.terminate(TerminationCause.forException(t));
>>> 1949:             }
>> 
>> Would you mind explaining the rationale for this change, please?
>
> This is to make tests fail if the assertion is fired. Typically an exception 
> while decoding/parsing would just cause the packet to be skipped. An 
> assertion here indicates that invariants have been violated (a problem in our 
> own code which should never happen), not that bad/unexpected bytes were 
> received. If that happens (assert fired), we want to know about it. 
> Assertions are typically enabled in testing (they are when running JDK tests) 
> but not in production.

I see. I'm assuming this is the most economic — in terms of, not just LoC, but 
also complexity — way to inform tests about this unexpected condition.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/29956#discussion_r2864692470
PR Review Comment: https://git.openjdk.org/jdk/pull/29956#discussion_r2864692247

Reply via email to