Marten Seemann
a4b0265628
use a chan instead of a context in Connection.HandshakeComplete ( #3709 )
2023-03-26 06:51:56 -07:00
Marten Seemann
7effedea79
don't apply invalid transport parameters ( #3700 )
2023-02-13 14:54:56 -08:00
Marten Seemann
849e53dc3a
fix logging of coalesced packets that don't contain long header packets ( #3705 )
...
There's a short period between dropping both Initial and Handshake keys and
completion of the handshake, during which we might call PackCoalescedPacket but
just pack a short header packet.
2023-02-13 02:52:04 -08:00
Marten Seemann
58cedf7a4f
rename module, adjust import paths to quic-go/quic-go ( #3680 )
2023-01-21 19:53:57 -08:00
Marten Seemann
00624f623d
refactor the framer to remove the version param from the constructor
2023-01-18 21:49:27 +13:00
Marten Seemann
4bb9f29b55
refactor the packet packer to remove the version param from constructor
2023-01-18 21:35:01 +13:00
Marten Seemann
56985cbfd1
refactor the packet unpacker to remove version param from constructor
2023-01-18 20:53:45 +13:00
Marten Seemann
d4a0793b6a
remove unused version parameter from streams map constructor
2023-01-18 20:52:00 +13:00
Marten Seemann
ef28f4667f
refactor frame parser to remove version parameter from constructor
2023-01-18 20:51:58 +13:00
Marten Seemann
582edae63d
refactor retransmissionQueue to remove version param from constructor
2023-01-18 20:50:17 +13:00
Marten Seemann
5c7d120b8f
remove unused version parameter form the connIDGenerator
2023-01-18 20:50:17 +13:00
Marten Seemann
3affa1d911
ackhandler: remove unused version parameter from constructor
2023-01-18 20:50:17 +13:00
Marten Seemann
2aa71ff76b
use a sync.Pool for ackhandler.Frames ( #3656 )
2023-01-17 23:15:02 -08:00
Marten Seemann
4d9ab7b604
Merge pull request #3636 from lucas-clemente/early-conn
...
make ConnectionState usable during the handshake
2023-01-17 22:29:08 -08:00
Marten Seemann
86edf7fd4b
remove the LongHeader field from the wire.Header
2023-01-17 21:53:39 +13:00
Marten Seemann
518fd1c877
separate long and short header packets in the coalescedPacket
2023-01-17 21:53:39 +13:00
Marten Seemann
124e597cf9
add a function to write short headers
2023-01-17 21:53:39 +13:00
Marten Seemann
87f51d33dc
move the packet buffer out of the shortHeaderPacket struct
2023-01-17 21:53:39 +13:00
Marten Seemann
ec9a6e7a99
introduce a shortHeaderPacket type and use it in packet packer
2023-01-17 21:53:39 +13:00
Marten Seemann
d72aa25fb8
split the logging function for short and long header packets
2023-01-17 21:53:39 +13:00
Marten Seemann
24be84cd00
introduce separate tracing calls for sent long and short header packets
2023-01-17 21:53:37 +13:00
Marten Seemann
9e5f92b561
return a coalesced packet when packing a probe packet
...
The coalesced packet will only consist of a single packet, but this will
make the refactoring easier.
2023-01-17 21:53:04 +13:00
Marten Seemann
45b489b6f6
make ConnectionState usable during the handshake
2023-01-05 16:37:07 +13:00
Marten Seemann
b52d34008f
add Allow0RTT opt in the quic.Config to control 0-RTT on the server side ( #3635 )
2023-01-04 16:18:11 -08:00
Marco Munizaga
f2d3cb8f43
expose the QUIC version of a connection ( #3620 )
...
* Expose the QUIC version of a connection via connection state
* Update interface.go
Co-authored-by: Marten Seemann <martenseemann@gmail.com>
* Finish rename
* gofmt
* Use public type for version number
Co-authored-by: Marten Seemann <martenseemann@gmail.com>
2022-11-15 14:59:49 -08:00
Toby
5fe9f9bd89
chore: fix multiple typos in comments ( #3612 )
...
* chore: fix multiple typos I run into
* Update conn_id_generator_test.go
Co-authored-by: Marten Seemann <martenseemann@gmail.com>
* Update internal/ackhandler/sent_packet_handler_test.go
Co-authored-by: Marten Seemann <martenseemann@gmail.com>
Co-authored-by: Marten Seemann <martenseemann@gmail.com>
2022-11-06 10:59:16 -08:00
Marten Seemann
ee013d9d23
use a monotonous timer for the connection ( #3570 )
...
There's no point in having the timer fire multiple times for the same
timestamp. By using a monotonuos timer we avoid busy-looping in cases where the
timer fires, but we can't actually send a packet.
2022-10-11 05:36:10 -07:00
Marten Seemann
fe277dc663
log the size of buffered packets ( #3571 )
2022-10-11 02:27:26 -07:00
Marten Seemann
1f6a9ecafd
use a Peek / Pop API for the datagram queue ( #3582 )
2022-10-11 02:25:17 -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
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
dfd35cb071
use a single bytes.Reader for frame parsing ( #3536 )
2022-09-01 01:06:50 -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
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
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
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
João Oliveirinha
66f6fe0b71
add support for providing a custom Connection ID generator via Config ( #3452 )
...
* Add support for providing a custom ConnectionID generator via Config
This work makes it possible for servers or clients to control how
ConnectionIDs are generated, which in turn will force peers in the
connection to use those ConnectionIDs as destination connection IDs when sending packets.
This is useful for scenarios where we want to perform some kind
selection on the QUIC packets at the L4 level.
* add more doc
* refactor populate config to not use provided config
* add an integration test for custom connection ID generators
* fix linter warnings
Co-authored-by: Marten Seemann <martenseemann@gmail.com>
2022-08-24 04:06:16 -07:00
KevinZønda
a90135751b
fix datagram support detection ( #3511 )
...
* fix: datagram support detection
- treat zero MaxDatagramFrameSize as unsupported.
- avoid send corresponding transport parameters when support is disabled
- report error when calling Send/ReceiveMessage and support is disabled
see https://github.com/lucas-clemente/quic-go/issues/3505
* patch: always initiate datagram
* fix: remove useless nil check
2022-08-22 03:02:40 -07:00
Marten Seemann
b659414495
use a single Go routine to send copies of CONNECTION_CLOSE packets
2022-08-21 15:41:47 +03:00
Marten Seemann
c3ab9c4ea9
replace all connection IDs at the same time when connection is closed
2022-08-21 14:09:49 +03:00
Benedikt Spies
7da024da5a
Disable anti-amplification limit by address validation token ( #3326 )
2022-08-20 08:02:17 -07:00