Commit Graph

1876 Commits

Author SHA1 Message Date
Marten Seemann
17a0541edb use the quic.Config to set the QUIC version in the Chrome tests 2017-09-05 19:30:14 +02:00
Marten Seemann
5751b599ee use atomics in the Chrome test HTTP handlers
This fixes a race condition in these tests.
2017-09-05 19:30:14 +02:00
Marten Seemann
7d446253c4 use the quic.Config to set the QUIC version in client integration tests
This fixes a race condition in that test.
2017-09-05 19:30:14 +02:00
Marten Seemann
682d8b1c7a fix race condition in the handshake RTT tests 2017-09-05 19:30:14 +02:00
Marten Seemann
e513cb7ad2 fix multiple race conditions in the proxy tests 2017-09-05 19:30:14 +02:00
Marten Seemann
508586ea7e fix a race condition in server integration test setup 2017-09-05 19:30:14 +02:00
Marten Seemann
03de09b236 Merge pull request #809 from lucas-clemente/fix-808
fix go routine leaks in client tests
2017-08-31 18:32:22 +07:00
Marten Seemann
500eb0d50d Merge pull request #804 from lucas-clemente/delete-empty-test-files
delete empty files in the integration tests folder
2017-08-31 18:16:57 +07:00
Marten Seemann
fa2ecefa31 fix go routine leaks in client tests 2017-08-31 17:55:48 +07:00
Marten Seemann
f5abd5d858 delete empty files in the integration tests folder
These empty files were necessary in Go 1.8, but are obsolete now.
2017-08-31 17:18:40 +07:00
Marten Seemann
e7d1d225dc Merge pull request #807 from lucas-clemente/type-aliases
use type aliases to clean up the API
2017-08-31 17:06:46 +07:00
Marten Seemann
60f5c660c6 export flow control window sizes as uint64 in quic.Config 2017-08-31 16:37:03 +07:00
Marten Seemann
e05f5ce594 remove obsolete documentation for the quic.Config 2017-08-31 16:37:03 +07:00
Marten Seemann
3c4a10a5e4 use type aliases to export types declared in the protocols package
Type aliases were introduced with Go 1.9, so we must drop support for
older Go versions now.
2017-08-31 16:36:52 +07:00
Marten Seemann
95a971f322 make the flow control package internal 2017-08-30 00:27:44 +07:00
Marten Seemann
f1ada87dcf make the protocol package internal 2017-08-30 00:19:44 +07:00
Marten Seemann
524ecb5827 move the Public Reset to the wire package 2017-08-29 23:58:27 +07:00
Marten Seemann
ed522ebbce make wire an internal package 2017-08-29 23:51:56 +07:00
Marten Seemann
1794636220 more the PublicHeader to the wire package 2017-08-29 23:45:38 +07:00
Marten Seemann
88afad8722 rename package frames to wire 2017-08-29 23:27:15 +07:00
Marten Seemann
5281d5b65d Merge pull request #792 from lucas-clemente/fix-441
add a quic.Config option to configure the idle timeout
2017-08-29 18:48:56 +07:00
Marten Seemann
24119d5a25 Merge pull request #801 from lucas-clemente/fix-800
make sure that the SHLO was sent before returning Listener.Accept
2017-08-29 18:48:23 +07:00
Marten Seemann
5152019554 don't use an idle timeout before the handshake has completed
This simplifies the timeout logic a bit. Before the handshake has
completed, the only timeout is the handshake timeout. After the
handshake has completed, the only timeout is the idle connection timeout.
2017-08-29 15:47:56 +07:00
Marten Seemann
293f26d292 Merge pull request #806 from lucas-clemente/listener-debug-message
print a debug message when the server is started
2017-08-29 15:11:46 +07:00
Marten Seemann
7ec09d2488 print a debug message when the server is started 2017-08-29 11:55:28 +07:00
Marten Seemann
bb670be93a make sure that the SHLO was sent before returning Listener.Accept
This fixes a race condition: In the server crypto setup, we would send
protocol.EncryptionForwardSecure on the aeadChan as soon as the SHLO was
composed, but before it was written to the crypto stream. This lead to
Listener.Accept returning the session already. If the server was ready
to write a lot of data then, this data could be sent before the crypto
setup would write on the crypto stream, therefore sending a lot of
undecryptable packets to the client, which would eventually lead to a
connection error (too many undecryptable packets).
2017-08-29 10:48:10 +07:00
Marten Seemann
71e82677e1 add a quic.Config option to configure the idle timeout 2017-08-28 17:58:39 +07:00
Marten Seemann
e398d5409a set the idle timeout during the handshake to half the handshake timeout 2017-08-28 17:58:39 +07:00
Marten Seemann
a6719bf417 Merge pull request #762 from lucas-clemente/improve-travis-output
print commands on Travis
2017-08-28 17:52:14 +07:00
Marten Seemann
3414cf8b49 Merge pull request #778 from lucas-clemente/reduce-travis-logging
disable verbose logging for integration tests on Travis
2017-08-28 17:50:47 +07:00
Marten Seemann
60be7e1e81 Merge pull request #798 from lucas-clemente/go1.9
use Go 1.9 on CIs
2017-08-28 15:32:02 +07:00
Marten Seemann
8ff8637bb8 don't print Chrome output 2017-08-28 15:28:07 +07:00
Marten Seemann
dc20c37f24 Merge pull request #799 from lucas-clemente/privatize-peek-conn-id
make PeekConnectionID a private method
2017-08-28 15:09:45 +07:00
Marten Seemann
f4aa2d5b0d improve logging on CIs
* make the logging on Travis less verbose
* log every test on AppVeyor
2017-08-28 10:07:10 +07:00
Marten Seemann
b699a92bd5 print commands on Travis 2017-08-27 18:09:01 +07:00
Marten Seemann
0665c08b88 make PeekConnectionID a private method 2017-08-27 17:55:38 +07:00
Marten Seemann
4d5bc253f0 use Go 1.9 on CIs 2017-08-27 12:42:15 +07:00
Marten Seemann
3390564e98 Merge pull request #782 from lucas-clemente/quic39
add support for QUIC 39
2017-08-24 17:59:51 +07:00
Marten Seemann
2b683be36a add QUIC 39 to supported versions
The Chrome installed on Travis doesn't support QUIC 39 yet.
2017-08-24 17:05:57 +07:00
Marten Seemann
a9e2a28315 Merge pull request #796 from lucas-clemente/chrome-exec-path
try to find the Chrome executable in different paths
2017-08-23 17:43:25 +07:00
Marten Seemann
ec619ede1d Merge pull request #795 from lucas-clemente/fix-653
use a chan to store sent packets in mock connection
2017-08-23 16:53:23 +07:00
Marten Seemann
cbc6f64461 try to find the Chrome executable in different paths 2017-08-23 16:44:58 +07:00
Marten Seemann
6bdd782a4b don't queue ACKs for non-retransmittable packets for QUIC >= 39
From QUIC 39 on, the peer is required to send a retransmittable packet
when it wishes to receive an ACK.
2017-08-23 16:00:48 +07:00
Marten Seemann
79bb3a9bd3 force sending of a retransmittable packet every 20 packets 2017-08-23 16:00:48 +07:00
Marten Seemann
843764aea3 write frames in big endian for QUIC 39 2017-08-23 16:00:48 +07:00
Marten Seemann
dd0daaaf1e implement version-dependent parsing of the Public Header 2017-08-23 16:00:45 +07:00
Marten Seemann
1a8a012019 implement a function to parse the connection ID from the Public Header
This will be needed to correctly parse the Public Header later. With the
upcoming changes in Q039 (and later, the transition to the IETF header
format), it's necessary to know the QUIC version in order to parse the
Public Header. For packets sent after the handshake, the version field
is not present in the Public Header, so we have to look it up by the
connection ID.
2017-08-23 15:57:35 +07:00
Marten Seemann
b5ff87b082 minor refactoring of Public Header parsing 2017-08-23 15:57:35 +07:00
Marten Seemann
2d4b7726b2 pass the QUIC version to all frame parsing functions 2017-08-23 15:57:35 +07:00
Marten Seemann
604c6ae406 implement an utils.BigEndian 2017-08-23 15:57:35 +07:00