What's Changed
- fix: expand a datagram that ends in a short header packet with padding frames by @larseggert in #4097
- fix(transport): close with missing_extension when ClientHello lacks transport parameters by @larseggert in #4126
- fix(transport): only apply a stateless reset token the peer sent by @larseggert in #4127
- fix(transport): switch version only after confirming compatible upgrade keys by @larseggert in #4115
- fix(http3): don't parse extended CONNECT stream data after a refused response by @larseggert in #4178
- refactor: log via tracing instead of log by @mxinden in #4044
- refactor(common): import Utf8Error instead of an inline path by @larseggert in #4263
- refactor(transport): implement Deref for ConnectionIdDecoderRef by @larseggert in #4254
- fix(transport): don't restart idle timer for duplicate packets by @larseggert in #4131
- fix(transport): reject NEW_CONNECTION_ID when sending zero-length connection IDs by @larseggert in #4227
- fix: check lengths instead of panicking and drop infallible conversions by @larseggert in #4257
- refactor: use std APIs stabilized up to Rust 1.95 by @larseggert in #4258
- refactor(transport)!: remove ConnectionIdGenerator::as_decoder by @larseggert in #4259
- fix(transport): close with PROTOCOL_VIOLATION on ACK of unsent packet by @larseggert in #4191
- fix(transport): issue NEW_TOKEN only for a validated path by @larseggert in #4106
- test(transport): make DATAGRAM length-field const assertion non-tautological by @larseggert in #4262
- fix(transport): ignore PATH_CHALLENGE from a new address during the handshake by @larseggert in #4107
- refactor(common)!: take NonZeroUsize in IncrementalDecoderIgnore::new by @saimskywalker in #4283
- fix(transport): bound recovered packet numbers to 2^62-1 by @larseggert in #4134
- fix(http3): validate :status and field names by @larseggert in #4145
- fix(http3): handle repeated and increasing GOAWAY IDs per RFC 9114 by @larseggert in #4224
- fix(http3): only reject request streams on GOAWAY by @larseggert in #4225
- fix(mtu): skip getifaddrs entries with a null ifa_addr by @larseggert in #4295
- fix(bin): keep client output and QNS paths inside their directories by @larseggert in #4298
- fix(http3): skip GOAWAY stream sweeps that cannot reject a request by @larseggert in #4229
- fix(transport): look up interface MTU only for adopted paths by @larseggert in #4143
- fix(transport): reject RETIRE_CONNECTION_ID when using zero-length connection IDs by @larseggert in #4222
- fix(transport): stop re-applying initial limits after the handshake by @larseggert in #4215
- fix(transport): skip the send-stream walk on MAX_DATA when no stream waits for credit by @larseggert in #4184
- fix(qpack): share dynamic table entries instead of copying them by @larseggert in #4168
- fix(transport): send the RFC error codes for version negotiation, frame encoding and CID limit errors by @larseggert in #4170
- fix(qpack): send Stream Cancellation before the dynamic table capacity is set by @larseggert in #4167
- fix(qpack): track Required Insert Count per unacked header block by @larseggert in #4169
- fix(transport): don't build empty packets on a non-primary path by @larseggert in #4133
- fix(transport): drop datagrams from a new path before the handshake completes by @larseggert in #4137
- fix: keep PTOs within the anti-amplification limit by @larseggert in #4098
- fix: only acknowledge in a server Initial below the minimum datagram size by @larseggert in #4099
- fix(transport): keep closing packets and overdue PTOs within the anti-amplification limit by @larseggert in #4113
- fix(transport): apply the anti-amplification limit to every packet by @larseggert in #4123
- fix(transport): apply server cipher suites to accepted connections by @larseggert in #4299
- fix(qpack): grow literal buffer as data arrives by @larseggert in #4296
- fix(transport): clear queued events when entering draining by @larseggert in #4303
- refactor(common): add Header::field_size by @larseggert in #4307
- fix(http3): limit total size of interim responses per message by @larseggert in #4180
- fix(transport): continue initial packet numbers on downgrade after resumption by @larseggert in #4125
- fix(transport): validate HANDSHAKE_DONE on the client by @larseggert in #4109
- fix(transport): tie ECN validation outcomes to acknowledged marked packets by @larseggert in #4301
- fix(transport): acknowledge CE-marked packets immediately by @larseggert in #4247
- fix(qpack): compact decoder send buffer after each send by @larseggert in #4163
- fix(http3): reset a stream's send side after a stream error by @larseggert in #4153
- fix: close and reset with H3_NO_ERROR instead of 0 by @larseggert in #4173
- fix(http3): encode WebTransport exporter session ID as 64 bits by @mxinden in #4323
- fix(http3): validate request headers on send and receive by @larseggert in #4146
- fix(http3): accept client GOAWAY on the server by @larseggert in #4171
- fix(transport): classify IPv4-mapped migration addresses by canonical form by @larseggert in #4114
- fix: don't count old-path packets toward the server's new path after peer migration by @larseggert in #4096
- fix(transport): send TRANSPORT_PARAMETER_ERROR and VERSION_NEGOTIATION_ERROR for bad transport parameters by @larseggert in #4183
- fix(transport): only answer attributed packets while closing by @larseggert in #4130
- fix(transport): apply the ack delay only where RFC 9002 does by @larseggert in #4297
- fix(http3): reset malformed messages with H3_MESSAGE_ERROR by @larseggert in #4147
New Contributors
- @saimskywalker made their first contribution in #4283
- @peterlodri-sec made their first contribution in #4335
- @shu-chen-dot-ca made their first contribution in #4376
Full Changelog: v0.34.0...v0.35.0