Marten Seemann
66e4da3031
add more integration tests for the handshake
2017-11-04 22:48:16 +07:00
Marten Seemann
adb59b7085
Merge pull request #928 from lucas-clemente/crypto-stream-0
...
use stream 0 for the crypto stream when using TLS
2017-11-04 15:37:07 +07:00
Marten Seemann
9f1eb62860
implement the IETF draft BLOCKED and STREAM_BLOCKED frames
2017-11-04 15:22:14 +07:00
Marten Seemann
0f1f1c8d41
implement the MAX_DATA and MAX_STREAM_DATA frames
...
For gQUIC WINDOW_UPDATEs are converted to MAX_DATA and MAX_STREAM_DATA,
respectively.
2017-11-04 15:22:14 +07:00
Marten Seemann
ccb2e9a2df
remove check for CONGESTION_FEEDBACK in the packet unpacker
...
CONGESTION_FEEDBACK was reserved for future use in gQUIC, but has never
actually been implemented. It won't make it to IETF QUIC, so we don't
need to check for it. Note that we'd still reject a CONGESTION_FEEDBACK
frame, since we're rejecting any unknown frame type.
2017-11-04 15:22:14 +07:00
Marten Seemann
1f644debd4
set if a stream contributes to connection flow control
...
This depends on the version. In gQUIC, stream 1 and 3 don't contribute,
in IETF QUIC only stream 0 doesn't contribute.
2017-11-04 15:22:14 +07:00
Marten Seemann
f662822486
use stream 0 for the crypto stream when using TLS
2017-11-04 15:22:07 +07:00
Marten Seemann
a2b77815ad
Merge pull request #934 from lucas-clemente/improve-server-close
...
improve closing of the server
2017-11-04 08:59:37 +07:00
Marten Seemann
4d9846482d
improve closing of the server
...
Closing the sessions can be done concurrently.
2017-11-03 17:49:28 +07:00
Marten Seemann
05f6e1cf8e
Merge pull request #929 from lucas-clemente/fix-926
...
send initial version in the CHLO, not the current version
2017-11-02 22:17:17 +07:00
Marten Seemann
a1a4f35096
send initial version in the CHLO, not the current version
...
This commit fixes two bugs:
1. In the CHLO, we need to send the initial QUIC version. It will differ
from the current version if version negotiation was performed.
2. The session setup was using the wrong version (current version, and
not the initial version), such that we would have sent the wrong version
in the TLS handshake as well.
2017-11-02 21:51:51 +07:00
Marten Seemann
96f65f922f
Merge pull request #927 from lucas-clemente/fix-925
...
fix client handshake failure when the server supports unknown versions
2017-11-02 21:34:04 +07:00
Marten Seemann
d77ba5271f
Merge pull request #922 from lucas-clemente/fix-920
...
reject packets that use the wrong or unknown packet types
2017-11-02 21:28:20 +07:00
Marten Seemann
589decab64
Merge pull request #930 from lucas-clemente/fix-public-reset-logging
...
fix logging of unparseable PUBLIC_RESETs
2017-11-02 21:16:03 +07:00
Marten Seemann
b40d249953
reject packets that use the wrong or unknown packet types
2017-11-02 20:47:02 +07:00
Marten Seemann
30effa5bdd
Merge pull request #921 from lucas-clemente/fix-919
...
rename the packet types according to recent draft changes
2017-11-02 20:45:43 +07:00
Marten Seemann
93703f8a4a
fix logging of unparseable PUBLIC_RESETs
2017-11-02 20:44:59 +07:00
Marten Seemann
3e6f66da79
rename the packet types according to recent draft changes
2017-11-02 18:31:04 +07:00
Marten Seemann
49e305f97f
Merge pull request #915 from lucas-clemente/fix-914
...
only use little endian byte order for gQUIC 37 and 38
2017-11-02 17:59:55 +07:00
Marten Seemann
43c23ff5fa
fix client handshake failure when the server supports unknown versions
2017-11-02 17:41:06 +07:00
Marten Seemann
1f6f5bb736
Merge pull request #836 from lucas-clemente/cookies
...
implement the TLS Cookie extension
2017-11-02 17:38:27 +07:00
Marten Seemann
aba1dd13ba
only use little endian byte order for gQUIC 37 and 38
...
That way, when adding new non-gQUIC versions, they will use big endian.
2017-11-02 16:46:22 +07:00
Marten Seemann
df13a0a970
implement the TLS Cookie extension
2017-11-02 16:45:43 +07:00
Marten Seemann
085702df36
Merge pull request #924 from lucas-clemente/fix-chrome-tests-on-travis
...
fix Chrome tests on Travis, remove test retries
2017-11-02 16:43:59 +07:00
Marten Seemann
e810c097da
remove the retries for the Chrome integration tests
2017-11-02 16:18:29 +07:00
Marten Seemann
fb054dea18
log Chrome version on Travis
2017-11-01 22:27:39 +07:00
Marten Seemann
b8d1ffef13
fix host resolver rule in Chrome integration test
...
This was the reason the Chrome integration tests have been failing
recently.
2017-11-01 22:26:29 +07:00
Marten Seemann
cc5f978996
Merge pull request #912 from lucas-clemente/fix-911
...
fix gQUIC version numbers
2017-10-30 19:46:36 +07:00
Marten Seemann
09334f432e
Merge pull request #909 from lucas-clemente/handle-ietf-style-vnps
...
handle IETF draft style Version Negotiation Packets
2017-10-30 19:44:34 +07:00
Marten Seemann
1614e31681
Merge pull request #916 from lucas-clemente/fix-handshake-retransmissions
...
fix the exponential backoff when sending handshake retransmissions
2017-10-30 18:48:52 +07:00
Marten Seemann
0a5030e02b
Merge pull request #910 from lucas-clemente/send-ietf-vnps
...
send IETF draft style version negotiation packets
2017-10-30 18:48:35 +07:00
Marten Seemann
b0f34e776e
send IETF draft style version negotiation packets
...
Send a gQUIC Version Negotiation Packet, if the client packet has a
Public Header. If the client has an IETF draft style header, send an
IETF draft style Version Negotiation Packet.
2017-10-30 18:23:12 +07:00
Marten Seemann
f412faad7b
fix the exponential backoff when sending handshake retransmissions
2017-10-30 18:10:42 +07:00
Marten Seemann
f6e44e3e8e
fix gQUIC version numbers
2017-10-30 11:51:26 +07:00
Marten Seemann
fc3087fab3
handle IETF draft style Version Negotiation Packets
2017-10-29 16:47:15 +07:00
Marten Seemann
515babb4bd
Merge pull request #902 from lucas-clemente/long-header-types
...
set the Long Header type
2017-10-29 15:48:34 +07:00
Marten Seemann
3f62ea8673
set the Long Header packet type based on the state of the handshake
2017-10-29 14:08:08 +07:00
Marten Seemann
a65929f6cf
add logging for the packet header
2017-10-27 22:56:41 +07:00
Marten Seemann
3e39991e1e
use the non-blocking of mint to cycle through the handshake
2017-10-27 22:54:40 +07:00
Marten Seemann
fcc380187a
Merge pull request #899 from lucas-clemente/fix-898
...
encrypt unprotected packets with a connection-dependent key
2017-10-27 22:52:04 +07:00
Marten Seemann
3edab90841
Merge pull request #896 from lucas-clemente/big-endian-version-numbers
...
make version numbers consistent with the IETF draft
2017-10-27 17:37:22 +07:00
Marten Seemann
4f86995e48
encrypt unprotected packets with a connection-dependent key
2017-10-27 17:35:08 +07:00
Marten Seemann
ddea1d83ab
use gomock to mock crypto.AEAD in the crypto setup tests
2017-10-27 17:35:08 +07:00
Marten Seemann
d98a11bb35
save version numbers such that can be written in big endian
...
This makes the version number representation consistent with the IETF
draft.
2017-10-27 17:24:24 +07:00
Marten Seemann
e81795e49b
Merge pull request #895 from lucas-clemente/new-header
...
implement the IETF draft Header
2017-10-27 17:18:15 +07:00
Marten Seemann
64a9de3efb
Merge pull request #897 from lucas-clemente/stricter-flow-control
...
make flow control stricter when receiving final offsets
2017-10-27 17:17:54 +07:00
Marten Seemann
4a4c56d8d2
Merge pull request #903 from lucas-clemente/go192
...
update CIs to Go 1.9.2
2017-10-27 16:57:48 +07:00
Marten Seemann
4556ad01e5
use the new packet header for connections using TLS
2017-10-27 16:54:47 +07:00
Marten Seemann
6c394acde7
never use a 6 byte packet number
...
According to the IETF draft, the only packet number lengths are 1, 2 and
4 bytes. With the given formula for the packet number derivation, we
would have only sent a 6 byte packet number if the difference between
the largest unacked and the current packet number exceeded 2^31, so this
would never have happened anyway.
2017-10-27 16:51:59 +07:00
Marten Seemann
bbe9affa27
reject version negotiation packets with an empty version list
2017-10-27 16:51:59 +07:00