Marten Seemann
1f6a9ecafd
use a Peek / Pop API for the datagram queue ( #3582 )
2022-10-11 02:25:17 -07:00
shade34321
a905648480
http3: handle ErrAbortHandler when the handler panics ( #3575 )
...
* Handle abort like the stdlib does
* Using the sentinel value from the stdlib instead of redefining.
* we return before logging out
* Added test to hand abort handler
* Added in two tests but apparently only saved the first one.
* remove one test case because it wasn't needed
2022-10-09 07:50:04 -07:00
Marten Seemann
424a66389c
http3: fix double close of chan when using DontCloseRequestStream ( #3561 )
2022-09-23 03:10:25 -07:00
Marten Seemann
17761bf35f
qlog: rename key_retired to key_discarded ( #3463 )
2022-09-09 06:39:49 -07:00
Marten Seemann
2b54aeac2d
Merge pull request #3545 from lucas-clemente/simplify-ack-only-packing
...
simplify packing of ACK-only packets
2022-09-09 14:00:07 +03:00
Marten Seemann
d1d9f49ed4
Merge pull request #3547 from lucas-clemente/pool-ack-frames
...
use a sync.Pool for ACK frames
2022-09-09 11:56:15 +03:00
Marten Seemann
818768df38
remove the MaybePackAckPacket from the packet packer
2022-09-09 11:39:25 +03:00
Marten Seemann
7bc2ba6b81
simplify packing of long header ACK-only packets
2022-09-09 11:39:25 +03:00
Marten Seemann
2873125c15
move packing of ACK-only short header packets to composeNextPacket
2022-09-09 11:39:25 +03:00
Marten Seemann
c57ea6f276
prioritize sending ACKs over sending new DATAGRAM frames ( #3544 )
2022-09-09 01:38:38 -07:00
Marten Seemann
63764c429c
use a sync.Pool for ACK frames
2022-09-06 14:41:13 +03:00
Marten Seemann
c3289188d1
append ACK ranges instead of allocating a new slice
2022-09-05 20:15:35 +03:00
Marten Seemann
62b82789c0
http3: reduce usage of bytes.Buffer ( #3539 )
2022-09-01 06:39:21 -07:00
Marten Seemann
dfd35cb071
use a single bytes.Reader for frame parsing ( #3536 )
2022-09-01 01:06:50 -07:00
Marten Seemann
93e1d031b9
split code paths for packing 0-RTT and 1-RTT packets in packet packer ( #3540 )
2022-08-30 04:41:04 -07:00
Marten Seemann
656f3d2d7d
remove the wire.ShortHeader in favor of more return values ( #3535 )
2022-08-30 04:37:36 -07:00
Marten Seemann
5cd5341545
preallocate the message buffers of the ipv4.Message passed to ReadBatch ( #3541 )
2022-08-30 04:11:43 -07:00
Marten Seemann
0b26365dae
Merge pull request #3534 from lucas-clemente/header-parsing
...
introduce a separate code paths for Short Header packet handling
2022-08-30 14:09:38 +03:00
Marten Seemann
80c3afed34
fix usage of ackhandler.Packet pool for non-ack-eliciting packets ( #3538 )
2022-08-30 04:09:11 -07:00
Marten Seemann
31995601a9
return an error when parsing a too long connection ID from a header ( #3533 )
2022-08-30 04:08:41 -07:00
Marten Seemann
7023b52e13
speed up marshaling of transport parameters ( #3531 )
...
The speedup comes from multiple sources:
1. We now preallocate a byte slice, instead of appending multiple times.
2. Marshaling into a byte slice is faster than using a bytes.Buffer.
3. quicvarint.Write allocates, while quicvarint.Append doesn't.
2022-08-29 23:05:52 +03:00
Marten Seemann
4f3d3b36ac
introduce a separate code path for unpacking short header packets
2022-08-29 15:55:37 +03:00
Marten Seemann
ed15a94703
split the tracing function for received short and long header packets
2022-08-29 15:32:27 +03:00
Marten Seemann
3a12a898a5
add a wire.ShortHeader, implement short header parsing
...
The new parsing function is vastly faster than the combination of header
and extended header parsing:
BenchmarkShortHeaderParsing-10 44192314 26.79 ns/op 48 B/op 1 allocs/op
BenchmarkShortHeaderParsingOld-10 12627363 99.99 ns/op 228 B/op 3 allocs/op
2022-08-29 15:06:34 +03:00
Marten Seemann
42cec84221
extend ByteOrder interface to allow converting from a byte slice
2022-08-29 13:11:58 +03:00
Marten Seemann
e3723a0ef1
move the check for empty payload to the unpacker
2022-08-29 13:11:58 +03:00
Marten Seemann
fd1b3a23c4
remove unneeded packet number field from the unpackedPacket
2022-08-29 13:11:57 +03:00
Marten Seemann
7d827d515e
don't pass the header to connection.tryQueueingUndecryptablePacket
2022-08-29 13:11:16 +03:00
Marten Seemann
f41772c43c
return an error when parsing a too long connection ID from a header
2022-08-29 13:05:24 +03:00
Marten Seemann
3f1adfd822
Merge pull request #3529 from lucas-clemente/conn-id-array
...
use a struct containing an array to represent Connection IDs
2022-08-29 12:24:15 +03:00
Marten Seemann
15945e3190
Merge pull request #3525 from lucas-clemente/ackhandler-linked-list-allocs
...
reduce allocations of ackhandler.Packet
2022-08-29 12:07:12 +03:00
Marten Seemann
a3b91cf683
use a sync.Pool to avoid allocations of ackhandler.Packet
2022-08-29 11:45:28 +03:00
Marten Seemann
4cbb4f8114
remove ConnectionID.Equal function
...
Connection IDs can now be compared with ==.
2022-08-29 11:30:32 +03:00
Marten Seemann
1aced95d41
use an array instead of a byte slice for Connection IDs
2022-08-29 11:30:31 +03:00
Marten Seemann
9e0f9e62ff
parse arbitrary length Connection IDs in Version Negotiation packets
2022-08-29 10:58:33 +03:00
Marten Seemann
53412e9ba3
trace arbitrary length Connection IDs for Version Negotiation packets
2022-08-29 10:58:33 +03:00
Marten Seemann
ecc8320c2c
add a tracer function to trace sending of Version Negotiation packets
2022-08-29 10:58:33 +03:00
Marten Seemann
21b9ef03be
add a type for arbitrary length Connection IDs, and parsing function
...
RFC 8999 allows Connection IDs of up to 255 bytes. Current QUIC versions
only use up to 20 bytes.
2022-08-29 10:58:33 +03:00
Marten Seemann
d7097d74f0
implement a function to parse the version number of a Long Header packet
2022-08-29 10:58:33 +03:00
Marten Seemann
ec9c824d98
Merge pull request #3530 from lucas-clemente/frame-append-to-slice
...
serialize frames by appending to a byte slice, not to a bytes.Buffer
2022-08-29 10:58:00 +03:00
Marten Seemann
abb913d29c
fix datagram RFC number in documentation for quic.Config ( #3523 )
2022-08-29 10:28:25 +03:00
Marten Seemann
ff47a7e14e
add DPLPMTUD (RFC 8899) to list of supported RFCs in README ( #3520 )
2022-08-29 10:27:38 +03:00
Marten Seemann
880dfc699c
use the null tracers in the tracer integration tests ( #3528 )
2022-08-29 10:27:04 +03:00
Marten Seemann
ab6d664b43
rename frame.Write to frame.Append
2022-08-28 23:18:24 +03:00
Marten Seemann
3ca1001951
append to a byte slice instead of a bytes.Buffer when serializing frames
2022-08-28 23:18:06 +03:00
Marten Seemann
65dd82ad90
implement a quicvarint.Append method
2022-08-28 22:51:03 +03:00
Marten Seemann
fd38fe4a9a
avoid allocations when adding packets to the sent packet history
2022-08-27 18:22:46 +03:00
Marten Seemann
07412be8a0
Merge pull request #3512 from lucas-clemente/null-connection-tracer
...
add a logging.NullTracer and logging.NullConnectionTracer
v0.29.0
2022-08-27 13:53:41 +03:00
Marten Seemann
cd87a64e1e
use the logging.Null{Connection}Tracer in integration tests
2022-08-27 13:16:40 +03:00
Marten Seemann
c29276ef67
expose the Null{Connection}Tracer as types, not as variables
2022-08-27 13:08:48 +03:00