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