Commit Graph

1144 Commits

Author SHA1 Message Date
Marten Seemann
c9bfde9ac0 fix handling of multiple handshake messages in the case of errors
When receiving a handshake message after another handshake messages that
doesn't cause any action from the TLS stack (i.e. Certificate and
CertificateVerify), the handshake would run into a deadlock if the first
of these handshake messages caused an error in the TLS stack.

We need to make sure that we wait until a message has been fully
processed before proceeding with the handshake.
2020-09-13 20:13:57 +07:00
Marten Seemann
8ea663d04a skip a packet number when sending a 1-RTT PTO packet 2020-09-11 11:16:48 +07:00
Marten Seemann
12c9427f43 save dummy packets in the packet history when skipping packet numbers 2020-09-11 11:01:30 +07:00
Marten Seemann
0044a69d73 also pass non-ack-eliciting packets to packet history (but don't save) 2020-09-11 11:01:29 +07:00
Marten Seemann
8f4257a883 delete unacknowledged packets from the packet history after 3 PTOs 2020-09-10 18:51:05 +07:00
Marten Seemann
854940cecc don't drop keys for key phase N before receiving a N+1-protected packet 2020-09-10 11:11:59 +07:00
Marten Seemann
67decc5df9 Merge pull request #2765 from lucas-clemente/log-key-retirements
log when an old 1-RTT key is retired
2020-09-10 10:23:02 +07:00
Marten Seemann
ca0f0a8ac2 Merge pull request #2757 from lucas-clemente/key-phase-error-on-successful-decryption
only return an invalid first key phase error for decryptable packets
2020-09-09 23:58:59 +07:00
Marten Seemann
074f5a202e log when old 1-RTT keys are dropped 2020-09-09 23:53:47 +07:00
Marten Seemann
dbaacd49bd add a logging event for dropping 1-RTT keys 2020-09-09 23:53:47 +07:00
Marten Seemann
9e1d65f4c9 Merge pull request #2764 from lucas-clemente/fix-local-key-update-logging
fix logging of locally initiated key updates
2020-09-09 23:52:52 +07:00
Marten Seemann
a44c4f517f Merge pull request #2747 from lucas-clemente/simplify-sent-packet-history
refactor RTT measurements to simplify the sentPacketHistory
2020-09-09 23:50:26 +07:00
Marten Seemann
ade2882ef4 fix logging of locally initiated key updates 2020-09-09 23:22:10 +07:00
Marten Seemann
d89a446243 Merge pull request #2752 from lucas-clemente/fix-0rtt-packets-dropping
fix dropping of 0-RTT packets
2020-09-09 23:20:03 +07:00
Marten Seemann
e0824e3163 move the logging mock implementations to a separate package 2020-09-09 15:15:49 +07:00
Marten Seemann
34c325919c only return an invalid first key phase error for decryptable packets 2020-09-07 21:12:54 +07:00
Marten Seemann
ad40c9cc83 fix dropping of 0-RTT packets 2020-09-07 16:00:16 +07:00
Marten Seemann
dc3d5618fc use a uint8 for the EncryptionLevel 2020-09-07 14:36:18 +07:00
Marten Seemann
c7af1dc045 refactor RTT measurements to simplify the sentPacketHistory 2020-09-06 14:16:11 +07:00
Marten Seemann
97b0b6d5c7 use GitHub Actions to run unit tests, disable AppVeyor 2020-08-28 20:14:44 +07:00
Marten Seemann
556bf18dbf inject a random source into the token protector 2020-08-23 17:06:17 +07:00
Marten Seemann
166d91ae0f fix typo in error message in sent packet handler 2020-08-21 13:31:02 +07:00
Marten Seemann
2c43716ee0 Merge pull request #2725 from lucas-clemente/fix-max-ack-delay-overflow
fix overflow of the max_ack_delay when parsing transport parameters
2020-08-20 22:50:38 +07:00
Marten Seemann
d476067f65 fix overflow of the max_ack_delay when parsing transport parameters 2020-08-20 13:49:33 +07:00
Marten Seemann
154f434be8 regenerate the testdata certificate with SAN instead of CommonName
As required by Go 1.15.
2020-08-20 13:48:48 +07:00
Marten Seemann
125318d9c9 add support for Go 1.15 2020-08-20 13:33:33 +07:00
Marten Seemann
977dbc828c move all dependencies on qtls to a separate package 2020-08-18 14:26:23 +07:00
Marten Seemann
524da2213c remove redundant qtls-related type conversions 2020-08-18 14:22:24 +07:00
Marten Seemann
2593b1af81 add fuzzing for transport parameters 2020-08-18 11:54:28 +07:00
Marten Seemann
03a1db641f Merge pull request #2689 from lucas-clemente/dont-arm-app-data-pto-before-handshake-confirmed
only arm the application data PTO timer after the handshake is confirmed
2020-07-29 07:58:29 +07:00
Marten Seemann
6068883fa4 Merge pull request #2691 from lucas-clemente/fix-congestion-state-tracing
fix tracing of congestion state updates
2020-07-29 07:58:09 +07:00
Marten Seemann
6b7f204676 simplify the maybeQueueAck method in the receivedPacketTracker 2020-07-28 10:03:06 +07:00
Marten Seemann
260356140f remove ACK decimation
The benefits of this are unclear when using Reno / Cubic.
2020-07-28 10:03:05 +07:00
Marten Seemann
c7127594c8 fix tracing of congestion state updates 2020-07-28 08:56:21 +07:00
Marten Seemann
8db76ab9c2 only arm the application data PTO timer after the handshake is confirmed 2020-07-27 16:40:21 +07:00
Marten Seemann
0b7efe10d1 trace congestion state changes 2020-07-23 11:53:59 +07:00
Marten Seemann
741dc28d74 move the RTTStats to the utils package
The RTTStats are used by the logging package. In order to instrument the
congestion package, the RTTStats can't be part of that package any more
(to avoid an import loop).
2020-07-23 11:53:08 +07:00
Marten Seemann
ce16603a24 use untyped constants for RTT calculations 2020-07-23 11:52:37 +07:00
Marten Seemann
6328acffd7 remove the N connection simulation from the Reno code 2020-07-23 08:43:32 +07:00
Marten Seemann
2db579fdc8 remove the SSLR (slow start large reduction) experiment
We apparently copied that code over from Chromium's Cubic
implementation, but we certainly don't need it.
2020-07-22 22:30:03 +07:00
Marten Seemann
bc8b37cd14 Merge pull request #2683 from lucas-clemente/remove-reno-congestion-stats
remove unused connectionStats counters from the Reno implementation
2020-07-22 22:16:00 +07:00
Marten Seemann
74e32d6762 remove unused connectionStats counters from the Reno implementation 2020-07-22 14:35:58 +07:00
Marten Seemann
e79e45e3a2 privatize some methods in the congestion controller package 2020-07-22 13:42:18 +07:00
Marten Seemann
0c551c893c trace packets that are sent outside of a connection 2020-07-16 08:20:36 +07:00
Marten Seemann
dc245ca6a3 trace dropped packets in the server 2020-07-15 20:33:58 +07:00
Marten Seemann
ee24d3899e simplify the Tracer interface by combining the TracerFor... methods 2020-07-11 13:22:52 +07:00
Marten Seemann
a1bb39d6ab introduce a protocol.StatelessResetToken 2020-07-10 19:55:20 +07:00
Marten Seemann
0ef1b2f92e pass around the stateless reset token directly, not pointers to it
Benchmarks show that it's actually faster to make a copy of this 16 byte
array than passing around a pointer to it.
2020-07-10 19:44:57 +07:00
Marten Seemann
f93708aca8 introduce a logging.CloseReason to log the reason a session was closed
This also allows us to get rid of the ReceivedStatelessReset() method.
2020-07-10 19:23:32 +07:00
Marten Seemann
7d6ce4ea45 rename the logging.CloseReason to TimeoutReason 2020-07-10 19:17:21 +07:00