Commit Graph

190 Commits

Author SHA1 Message Date
Marten Seemann
6a7b9c6412 Merge pull request #2086 from lucas-clemente/fix-conn-close-length
fix length calculcation for CONNECTION_CLOSE frames
2019-08-23 22:05:52 +07:00
Marten Seemann
0dbfefc1f6 fix length calculcation for CONNECTION_CLOSE frames 2019-08-22 12:20:13 +07:00
Marten Seemann
ccb197939d replace WriteUintN and ReadUintN by explicit functions 2019-08-20 15:59:39 +07:00
Marten Seemann
3e65cfd9c0 Merge pull request #2074 from lucas-clemente/invalid-ack-delays
gracefully handle invalid ACK delay values when parsing ACK frames
2019-08-19 11:30:34 +07:00
Marten Seemann
295533595a Merge pull request #2073 from lucas-clemente/conn-close-frame-frame-type
parse and write the frame type field in the CONNECTION_CLOSE frame
2019-08-18 20:16:22 +07:00
Marten Seemann
f0bdf4f982 gracefully handle invalid ACK delay values when parsing ACK frames 2019-08-17 12:42:10 +07:00
Marten Seemann
96f0e96e45 parse and write the frame type field in the CONNECTION_CLOSE frame 2019-08-17 11:19:39 +07:00
Marten Seemann
6bcd740f56 reject NEW_CONNECTION_ID frames with invalid Retire Prior To values 2019-08-17 11:07:38 +07:00
Marten Seemann
bb4cfe29cb fix connection ID length check in the NEW_CONNECTION_ID frame 2019-08-17 10:58:40 +07:00
Marten Seemann
879467b3c5 Merge pull request #1997 from lucas-clemente/new-header-format
implement the new header format
2019-07-16 15:00:18 +07:00
Marten Seemann
dc33db1c18 implement the new header format 2019-07-09 13:04:40 +07:00
Marten Seemann
91961c8c6f add the Retire Prior To field to the NEW_CONNECTION_ID frame 2019-07-08 12:53:45 +07:00
Marten Seemann
5929a83210 Merge pull request #1974 from lucas-clemente/drop-old-keys
drop keys 3 PTOs after a key update
2019-06-30 17:51:28 +07:00
Marten Seemann
5104c5d554 Merge pull request #1972 from lucas-clemente/frame-enc-level-check
check if a frame is allowed at the encryption level it was sent with
2019-06-30 17:36:33 +07:00
Marten Seemann
5a9c593463 rename the KeyPhase to KeyPhaseBit 2019-06-30 17:36:09 +07:00
Marten Seemann
7b9b711a77 fix timing side channel when reading headers with invalid reserved bits 2019-06-30 15:57:03 +07:00
Marten Seemann
299da56aef check if a frame is allowed at the encryption level it was sent with 2019-06-29 12:32:19 +07:00
Marten Seemann
4fe0f6752c fix typos in error messages when parsing Version Negotiation packets 2019-06-29 11:00:57 +07:00
Marten Seemann
14a31d49a0 add a type for the key phase and use it for header parsing and writing 2019-06-22 20:01:18 +08:00
Marten Seemann
147181786a use a varint for the error code in the RESET_STREAM frame 2019-06-14 17:38:27 +08:00
Marten Seemann
453aa23553 use a varint for the error code in the CONNECTION_CLOSE frame 2019-06-14 17:35:40 +08:00
Marten Seemann
a8633a952c introduce a type for the stream number 2019-06-05 17:45:17 +08:00
Marten Seemann
82acc7f2b7 introduce invalid stream ID to simplify the outgoing streams map 2019-05-30 03:16:45 +08:00
Marten Seemann
8c40c3f768 improve logging of STREAMS_BLOCKED frames 2019-05-28 15:56:02 +02:00
Marten Seemann
c8aa4f4d4a improve logging of MAX_STREAMS frames 2019-05-28 15:54:25 +02:00
Marten Seemann
352ac45e32 set the QUIC bit in Version Negotiation packets 2019-03-29 09:20:41 +01:00
Marten Seemann
662041649f use the error names from the draft 2019-03-06 13:45:05 +09:00
Marten Seemann
9c09e84765 use IETF QUIC transport error codes 2019-03-06 13:43:18 +09:00
Marten Seemann
df34e4496e identify version negotiation packets without parsing the header 2019-02-23 10:24:42 +08:00
Marten Seemann
14426dfa12 implement a function to parse the destination connection ID of a packet 2019-02-23 10:24:42 +08:00
Marten Seemann
28ed85b9c6 move cutting of coalesced packets to the wire package 2019-02-23 10:24:42 +08:00
Marten Seemann
707e9f7b79 Merge pull request #1724 from lucas-clemente/ack-delay-exponent
implement the ack_delay_exponent
2019-01-28 22:00:38 +09:00
Marten Seemann
8380cf97a4 improve logging of NEW_TOKEN frames 2019-01-28 16:46:09 +09:00
Marten Seemann
cebb4342ec use the ack_delay_exponent sent in the transport parameters 2019-01-28 16:09:47 +09:00
Marten Seemann
ee75f5e2f2 implement ACK frame parsing using an ack delay exponent 2019-01-28 16:09:47 +09:00
Marten Seemann
741521c4d1 refactor frame parsing into a separate struct 2019-01-28 16:09:47 +09:00
Marten Seemann
7ac2766b74 improve logging of NEW_CONNECTION_ID frames 2019-01-26 16:31:53 +08:00
Marten Seemann
5a37e8983d remove unnecessary Raw byte slice from the header 2019-01-03 10:14:08 +07:00
Marten Seemann
03489f56a7 handle the packet length before parsing the extended header 2018-12-14 16:46:40 +06:30
Marten Seemann
0d30e43c32 implement the new format of the Retry packet 2018-11-27 08:29:31 +07:00
Marten Seemann
c791145cba check that the 4th and 5th bit in the short header first byte are unset 2018-11-26 23:14:18 +07:00
Marten Seemann
cce71d84a1 check that the 5th and 6th bit in the long header first byte are unset 2018-11-26 23:05:56 +07:00
Marten Seemann
bfb467e9b8 use the new packet number format 2018-11-26 23:05:55 +07:00
Marten Seemann
4145bcc8a7 reject a header if the 0x40 bit of the first bit is not set
This doesn't apply to the version negotiation packet.
2018-11-26 22:46:08 +07:00
Marten Seemann
9c07ac15b8 use the new code points for the packet types in the first byte 2018-11-26 22:46:06 +07:00
Marten Seemann
53aeb7d592 don't use the wire encoding for the PacketType constant 2018-11-26 22:45:28 +07:00
Marten Seemann
c5ca6fd7e5 parse the extended header in the session 2018-11-26 15:57:54 +07:00
Marten Seemann
70ce6a5814 parse the whole Long Header, if the version is known 2018-11-26 15:57:54 +07:00
Marten Seemann
b740d57c61 embed the Header in the ExtendedHeader 2018-11-26 15:57:54 +07:00
Marten Seemann
af157408de move parsing of extended headers to the same file as the struct 2018-11-26 15:57:54 +07:00