Marten Seemann
5ef89733ae
implement packet pacing
2018-01-21 14:27:37 +11:00
Marten Seemann
c3cc35363b
fire the timer twice, if reset to the same deadline
2018-01-21 14:10:15 +11:00
Marten Seemann
15bcc2579f
Merge pull request #1117 from lucas-clemente/mint-config-servername
...
copy the ServerName from the tls.Config to the mint.Config
2018-01-12 20:47:54 +07:00
Marten Seemann
5283cc5ff4
copy the ServerName from the tls.Config to the mint.Config
2018-01-12 20:30:07 +07:00
Marten Seemann
f33243fb41
Merge pull request #1114 from lucas-clemente/connection-state
...
expose the ConnectionState in the Session
2018-01-12 17:09:52 +07:00
Marten Seemann
5e8c17744b
Merge pull request #1116 from lucas-clemente/mint-require-client-auth
...
transfer the ClientAuth from tls.Config to the mint.Config
2018-01-12 17:01:51 +07:00
Marten Seemann
8b81d876a4
Merge pull request #1118 from lucas-clemente/received-packet-time
...
use the packet receive time in the receivedPacketHandler
2018-01-12 17:00:00 +07:00
Marten Seemann
e7e09c9a7e
Merge pull request #1119 from lucas-clemente/sent-packet-handler-syscalls
...
reduce the number of time.Now() syscalls in the sentPacketHandler
2018-01-12 16:58:49 +07:00
Marten Seemann
f68854d3f8
reduce the number of time.Now() syscalls in the sentPacketHandler
2018-01-12 11:50:26 +07:00
Marten Seemann
9b3139a1d6
use the packet receive time in the receivedPacketHandler
...
By passing the packet receive time to the receivedPacketHandler we can
get rid of two time.Now() syscalls.
2018-01-12 11:30:39 +07:00
Marten Seemann
1181657ac1
transfer the ClientAuth from tls.Config to the mint.Config
2018-01-11 22:41:21 +07:00
Marten Seemann
66fd3b5195
expose the ConnectionState in the Session
...
The ConnectionState contains basic details about the QUIC connection.
2018-01-11 16:27:42 +07:00
Marten Seemann
53dd697adf
Merge pull request #1113 from lucas-clemente/fix-server-sending-first
...
make the client send a packet when the handshake completes (in gQUIC)
2018-01-11 01:37:52 +07:00
Marten Seemann
3818fa16b3
make the client send a packet when the handshake completes (in gQUIC)
...
In gQUIC, there's no equivalent to the Finished message in TLS. The
server knows that the handshake is complete when it receives the first
forward-secure packet sent by the client. If the protocol demands that
the server sends the first data, this would never happen. We need to
make sure that the client actually sends such a packet. Queueing a PING
frame is an easy way to do so.
2018-01-10 19:25:41 +07:00
Marten Seemann
ca0f9f4a12
Merge pull request #1110 from lucas-clemente/split-streams-maps
...
introduce a separate streamsMap for IETF QUIC
2018-01-10 09:12:05 +07:00
Marten Seemann
fa4724c8eb
remove counting of streams from the IETF streamsMap
...
Streams have to be counted to enforce the max stream limit. We don't
advertise a max stream limit in the TLS handshake yet, so this never
worked for IETF QUIC. Removing this will make implementing
unidirectional streams easier.
2018-01-10 08:56:15 +07:00
Marten Seemann
a20e94ee16
use separate streamsMaps for gQUIC and IETF QUIC
...
This is a lot of duplicate code for now, but it will make moving towards
the new stream ID mapping in IETF QUIC (and unidirectional streams) much
easier.
2018-01-10 08:56:15 +07:00
Marten Seemann
69437a0e78
introduce a streamManager interface for the streamsMap
2018-01-10 08:56:15 +07:00
Marten Seemann
e802491a8f
create internal interfaces for send and receive streams
...
And use those for handling frames.
2018-01-10 08:56:13 +07:00
Marten Seemann
7a3209b3a4
return a Stream, not streamI, from streamsMap Open and Accept methods
2018-01-10 08:53:17 +07:00
Marten Seemann
78d7f6fdba
Merge pull request #1104 from lucas-clemente/delete-non-fw-retransmissions
...
delete non-forward-secure retransmissions when the handshake completes
2018-01-10 08:53:00 +07:00
Marten Seemann
fd65fbb194
Merge pull request #1111 from lucas-clemente/enable-travis-latest
...
Enable travis latest
2018-01-09 20:49:12 +07:00
Marten Seemann
f94505b66c
Merge pull request #1076 from lucas-clemente/optimize-queueing-of-crypto-stream
...
also use the onHasStreamData callback for the crypto stream
2018-01-09 20:48:53 +07:00
Marten Seemann
264c747a82
Merge pull request #1088 from lucas-clemente/fix-1002
...
send CONNECTION_CLOSEs from the stateless server
2018-01-09 20:48:12 +07:00
Marten Seemann
32d440728c
send CONNECTION_CLOSEs from the stateless server
...
If an error occurs after a packet was successfully unpacked, we should
send a CONNECTION_CLOSE.
2018-01-09 17:17:54 +07:00
Marten Seemann
d330fda94c
also use the onHasStreamData callback for the crypto stream
2018-01-09 17:17:16 +07:00
Marten Seemann
b0ab718c7a
delete non-forward-secure retransmissions when the handshake completes
2018-01-09 17:16:27 +07:00
Marten Seemann
5cd5d5dae9
Merge pull request #1112 from lucas-clemente/refactor-packet-sending
...
Refactor packet sending
2018-01-09 17:05:24 +07:00
Marten Seemann
4c534804ba
use the travis_latest Travis image
...
As described on https://blog.travis-ci.com/2017-12-01-new-update-schedule-for-linux-build-images .
2018-01-09 16:45:43 +07:00
Marten Seemann
3e2faa45a6
refactor sending such that session.sendPacket only sends one packet
2018-01-09 16:42:44 +07:00
Marten Seemann
46384c4845
refactor sending of ACK-only packets in a separate function
...
No functional change expected.
2018-01-09 16:42:44 +07:00
Marten Seemann
f8e5a13c7d
use a gomock congestion in tests
2018-01-09 16:42:44 +07:00
Marten Seemann
af4c7c2faf
Merge pull request #1109 from lucas-clemente/fix-chrome-on-travis
...
enable the no-sandbox mode for Chrome in integration tests
2018-01-09 15:39:42 +07:00
Marten Seemann
3247d04d4a
fix Chrome integration tests on Travis
2018-01-09 10:45:16 +07:00
Marten Seemann
60bc8ece63
Merge pull request #1106 from lucas-clemente/regenerate-error-codes
...
regenerate the qerr error codes
2018-01-08 15:52:28 +07:00
Marten Seemann
c3d2d7d5cc
regenerate the qerr error codes
...
The stringer output format slightly changed.
2018-01-08 09:42:00 +07:00
Marten Seemann
88c7a2efdb
Merge pull request #1103 from lucas-clemente/max-stream-id
...
implement the MAX_STREAM_ID and STREAM_ID_BLOCKED frames
2018-01-04 18:12:31 +07:00
Marten Seemann
de4157f9ad
implement parsing and writing of STREAM_ID_BLOCKED frames
2018-01-04 17:02:14 +07:00
Marten Seemann
5afe35328a
implement parsing and writing of MAX_STREAM_ID frames
2018-01-04 17:02:10 +07:00
Marten Seemann
32168928d1
Merge pull request #1098 from lucas-clemente/h2quic-client-refactor-header-loop
...
refactor the loop reading the header stream in the h2quic client
2018-01-04 09:38:57 +07:00
Marten Seemann
19c12a9470
refactor the loop reading the header stream in the h2quic client
2018-01-04 08:35:25 +07:00
Marten Seemann
4fec90bb06
Merge pull request #1101 from lucas-clemente/remove-streamsmap-range
...
remove the Range method in the streamsMap
2018-01-04 08:27:49 +07:00
Marten Seemann
c21e55b730
Merge pull request #1100 from lucas-clemente/fix-1099
...
use the timescale factor for flow control tests on CIs
2018-01-03 23:25:02 +07:00
Marten Seemann
b687dd774f
remove the Range method in the streamsMap
...
streamsMap.Range was only used to pass the stream flow control window to
all open streams after receiving the peer's transport parameters. It's
easier to pass the transport parameters to the streamsMap directly.
2018-01-03 16:18:53 +07:00
Marten Seemann
0e3e3a0370
Merge pull request #1081 from lucas-clemente/stream-completed-callback
...
immediately delete a stream when it is completed
2018-01-03 11:33:19 +07:00
Marten Seemann
8a3f807a12
immediately delete a stream when it is completed
...
By introducing a callback to the stream, which the stream calls as soon
as it is completed, we can get rid of checking every single open stream
if it is completed.
2018-01-03 10:30:20 +07:00
Marten Seemann
b7b50572eb
use the timescale factor for flow control tests on CIs
2018-01-03 10:26:50 +07:00
Marten Seemann
843a0786fc
Merge pull request #1084 from lucas-clemente/fix-1083
...
fix flaky send stream test
2018-01-03 09:55:32 +07:00
Marten Seemann
ec339f6702
Merge pull request #1090 from lucas-clemente/better-h2quic-client-errors
...
improve error handling in the h2quic client for header stream handling
2018-01-03 09:36:53 +07:00
Marten Seemann
f2a1206c20
fix flaky send stream test
2018-01-03 09:32:09 +07:00