Commit Graph

2327 Commits

Author SHA1 Message Date
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
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
Marten Seemann
2ccd795a61 Merge pull request #1073 from lucas-clemente/improve-send-stream-tests
improve send stream tests
2018-01-03 09:30:18 +07:00
Marten Seemann
fc4adb4775 improve error handling in the h2quic client for header stream handling
When the underlying QUIC stream is closed, the close error should be
returned. This always happens when receiving a CONNECTION_CLOSE from the
server.
Furthermore, this adds a missing break statement in the case when
receiving an invalid HTTP request.
2018-01-03 09:07:18 +07:00
Marten Seemann
0311bff1f2 improve the send stream tests 2018-01-03 08:46:46 +07:00
Marten Seemann
2f6dfefe59 Merge pull request #1079 from lucas-clemente/fix-1078
don't create stream 1 in the streamsMap on GetOrOpenStream (for gQUIC)
2018-01-03 08:42:33 +07:00
Marten Seemann
02c6b9f00c Merge pull request #1072 from lucas-clemente/blocked-streams-are-inactive
don't report blocked streams as active for sending data
2018-01-03 08:42:11 +07:00
Marten Seemann
5371f804f8 don't report blocked streams as active for sending data 2018-01-03 00:18:33 +07:00
Marten Seemann
c626137608 Merge pull request #1082 from lucas-clemente/fix-mockgen-vendor-problem
fix mockgen script which caused a probem with the vendored curve25519
2018-01-03 00:16:29 +07:00
Marten Seemann
38281575a2 don't create stream 1 in the streamsMap on GetOrOpenStream (for gQUIC) 2018-01-02 23:57:20 +07:00
Marten Seemann
79c95e1161 fix mockgen script which caused a probem with the vendored curve25519
curve25519 uses Go compiler directives (go:noescape), which apparently
mockgen doesn't understand and therefore throws errors.
2018-01-02 23:55:12 +07:00
Marten Seemann
091b6b2602 Merge pull request #1087 from lucas-clemente/remove-non-forward-secure-dialing
remove non forward-secure dialing
2018-01-02 23:48:00 +07:00
Marten Seemann
924cd08ebb Merge pull request #1069 from lucas-clemente/queue-stream-data-from-stream
introduce a queue of active streams for sending data
2018-01-02 23:36:22 +07:00
Marten Seemann
99a2853e7d remove non forward-secure dialing
This was broken for a long time, and won't be available when using the
TLS 1.3 handshake.
2018-01-02 23:26:55 +07:00
Marten Seemann
d9c107b034 introduce a queue of active streams in the streamFramer
The queue holds all streams that have data to send. When stream.Write or
stream.Close are called, a stream is added to this queue. It is removed
from the queue when all available (at that moment) data was sent.
This way, we don't need the round robin scheduling (which, for every
packet sent, asked every single open stream if it had data) any more.
2018-01-02 23:24:44 +07:00