fix(quic): restore QuicVersion + ctor params lost in qlog merge
Same merge-from-main shape as the prior agent A integration: the qlog
agent's worktree didn't carry the version-negotiation work (QuicVersion
import, currentVersion / vnConsumed fields, applyVersionNegotiation),
the Retry work (extraSecretsListener / cipherSuites / applyRetry), or
the version-negotiation testcase wiring. Merge with -X theirs took the
qlog version of QuicConnection.kt + QuicConnectionWriter.kt + the
existing InteropRunner.kt wholesale, dropping those.
Restored:
- QuicVersion import in QuicConnection.kt + QuicConnectionWriter.kt +
the test-side InteropRunner.kt (also touched by agent B's qlog
hooks).
- extraSecretsListener / cipherSuites / initialVersion ctor params
on QuicConnection (qlogObserver kept; new qlog work landed).
Net result: all three overnight agents (A versionnegotiation, B qlog
observer, C peer-uni-stream drainer) now coexist on the branch with no
references missing. Full :quic:jvmTest green; :quic-interop:test +
installDist green.
https://claude.ai/code/session_01HcvfQq1ttPV9PkRoJb4nyT
This commit is contained in:
@@ -25,6 +25,7 @@ import com.vitorpamplona.quic.crypto.InitialSecrets
|
|||||||
import com.vitorpamplona.quic.crypto.PlatformAesOneBlock
|
import com.vitorpamplona.quic.crypto.PlatformAesOneBlock
|
||||||
import com.vitorpamplona.quic.crypto.bestAes128GcmAead
|
import com.vitorpamplona.quic.crypto.bestAes128GcmAead
|
||||||
import com.vitorpamplona.quic.observability.QlogObserver
|
import com.vitorpamplona.quic.observability.QlogObserver
|
||||||
|
import com.vitorpamplona.quic.packet.QuicVersion
|
||||||
import com.vitorpamplona.quic.stream.QuicStream
|
import com.vitorpamplona.quic.stream.QuicStream
|
||||||
import com.vitorpamplona.quic.stream.StreamId
|
import com.vitorpamplona.quic.stream.StreamId
|
||||||
import com.vitorpamplona.quic.tls.TlsClient
|
import com.vitorpamplona.quic.tls.TlsClient
|
||||||
@@ -74,6 +75,30 @@ class QuicConnection(
|
|||||||
.toEpochMilliseconds()
|
.toEpochMilliseconds()
|
||||||
},
|
},
|
||||||
val alpnList: List<ByteArray> = listOf(TlsConstants.ALPN_H3),
|
val alpnList: List<ByteArray> = listOf(TlsConstants.ALPN_H3),
|
||||||
|
/**
|
||||||
|
* Optional second listener invoked after the connection's own
|
||||||
|
* key-installation listener. Used by the interop runner endpoint to
|
||||||
|
* dump SSLKEYLOG lines so Wireshark can decrypt captured pcaps.
|
||||||
|
* Default `null` keeps production callers unaffected.
|
||||||
|
*/
|
||||||
|
val extraSecretsListener: TlsSecretsListener? = null,
|
||||||
|
/**
|
||||||
|
* TLS cipher suites to offer in the ClientHello. Override to e.g.
|
||||||
|
* `intArrayOf(TlsConstants.CIPHER_TLS_CHACHA20_POLY1305_SHA256)` for the
|
||||||
|
* `chacha20` interop testcase. Default matches [TlsClient]'s default.
|
||||||
|
*/
|
||||||
|
val cipherSuites: IntArray =
|
||||||
|
intArrayOf(
|
||||||
|
TlsConstants.CIPHER_TLS_AES_128_GCM_SHA256,
|
||||||
|
TlsConstants.CIPHER_TLS_CHACHA20_POLY1305_SHA256,
|
||||||
|
),
|
||||||
|
/**
|
||||||
|
* Version this connection puts in the FIRST Initial it sends. Defaults
|
||||||
|
* to [QuicVersion.V1]; the interop runner sets it to
|
||||||
|
* [QuicVersion.FORCE_VERSION_NEGOTIATION] for the `versionnegotiation`
|
||||||
|
* testcase, which drives the client through the RFC 9000 §6 VN flow.
|
||||||
|
*/
|
||||||
|
val initialVersion: Int = QuicVersion.V1,
|
||||||
/**
|
/**
|
||||||
* Optional qlog observer (draft-marx-qlog). Production callers
|
* Optional qlog observer (draft-marx-qlog). Production callers
|
||||||
* leave this at [QlogObserver.NoOp] (zero overhead). Interop /
|
* leave this at [QlogObserver.NoOp] (zero overhead). Interop /
|
||||||
|
|||||||
+1
-1
@@ -22,7 +22,6 @@ package com.vitorpamplona.quic.connection
|
|||||||
|
|
||||||
import com.vitorpamplona.quic.QuicCodecException
|
import com.vitorpamplona.quic.QuicCodecException
|
||||||
import com.vitorpamplona.quic.connection.recovery.drainAckedSentPackets
|
import com.vitorpamplona.quic.connection.recovery.drainAckedSentPackets
|
||||||
import com.vitorpamplona.quic.packet.RetryPacket
|
|
||||||
import com.vitorpamplona.quic.frame.AckFrame
|
import com.vitorpamplona.quic.frame.AckFrame
|
||||||
import com.vitorpamplona.quic.frame.ConnectionCloseFrame
|
import com.vitorpamplona.quic.frame.ConnectionCloseFrame
|
||||||
import com.vitorpamplona.quic.frame.CryptoFrame
|
import com.vitorpamplona.quic.frame.CryptoFrame
|
||||||
@@ -42,6 +41,7 @@ import com.vitorpamplona.quic.observability.qlogFrameName
|
|||||||
import com.vitorpamplona.quic.packet.LongHeaderPacket
|
import com.vitorpamplona.quic.packet.LongHeaderPacket
|
||||||
import com.vitorpamplona.quic.packet.LongHeaderType
|
import com.vitorpamplona.quic.packet.LongHeaderType
|
||||||
import com.vitorpamplona.quic.packet.QuicVersion
|
import com.vitorpamplona.quic.packet.QuicVersion
|
||||||
|
import com.vitorpamplona.quic.packet.RetryPacket
|
||||||
import com.vitorpamplona.quic.packet.ShortHeaderPacket
|
import com.vitorpamplona.quic.packet.ShortHeaderPacket
|
||||||
import com.vitorpamplona.quic.stream.StreamId
|
import com.vitorpamplona.quic.stream.StreamId
|
||||||
import com.vitorpamplona.quic.tls.TlsClient
|
import com.vitorpamplona.quic.tls.TlsClient
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ import com.vitorpamplona.quic.observability.qlogFrameName
|
|||||||
import com.vitorpamplona.quic.packet.LongHeaderPacket
|
import com.vitorpamplona.quic.packet.LongHeaderPacket
|
||||||
import com.vitorpamplona.quic.packet.LongHeaderPlaintextPacket
|
import com.vitorpamplona.quic.packet.LongHeaderPlaintextPacket
|
||||||
import com.vitorpamplona.quic.packet.LongHeaderType
|
import com.vitorpamplona.quic.packet.LongHeaderType
|
||||||
|
import com.vitorpamplona.quic.packet.QuicVersion
|
||||||
import com.vitorpamplona.quic.packet.ShortHeaderPacket
|
import com.vitorpamplona.quic.packet.ShortHeaderPacket
|
||||||
import com.vitorpamplona.quic.packet.ShortHeaderPlaintextPacket
|
import com.vitorpamplona.quic.packet.ShortHeaderPlaintextPacket
|
||||||
|
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import com.vitorpamplona.quic.connection.QuicConnection
|
|||||||
import com.vitorpamplona.quic.connection.QuicConnectionConfig
|
import com.vitorpamplona.quic.connection.QuicConnectionConfig
|
||||||
import com.vitorpamplona.quic.connection.QuicConnectionDriver
|
import com.vitorpamplona.quic.connection.QuicConnectionDriver
|
||||||
import com.vitorpamplona.quic.observability.QlogObserver
|
import com.vitorpamplona.quic.observability.QlogObserver
|
||||||
|
import com.vitorpamplona.quic.packet.QuicVersion
|
||||||
import com.vitorpamplona.quic.tls.PermissiveCertificateValidator
|
import com.vitorpamplona.quic.tls.PermissiveCertificateValidator
|
||||||
import com.vitorpamplona.quic.transport.UdpSocket
|
import com.vitorpamplona.quic.transport.UdpSocket
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
|
|||||||
Reference in New Issue
Block a user