Lucas Clemente
37f2066933
remove caching of streamID lengths in StreamFrame
...
fixes the final failing test of #83
2016-07-08 18:21:46 +02:00
Lucas Clemente
d1e3b541d3
replace streamFrameQueue with just-in-time framing of written data
...
This commits replaces the stream frame queue with a framer which
requests data from the streams just when a frame is needed by the
packet packer. This simplifies a lot of things and allows some other
refactorings, see issue #83 .
There are a few pending tests which will be fixed soon.
2016-07-08 18:21:44 +02:00
Marten Seemann
1fc83757a0
fix panic in QUIC 34 ACK frame parser for incorrect typeBytes
...
fixes #198
2016-07-05 15:10:22 +08:00
Marten Seemann
da2b2f3a2d
parse QUIC 34 ACK Frames with an incomplete range
...
fixes #194
2016-07-03 23:59:11 +08:00
Marten Seemann
1186af3f99
reject QUIC 34 ACK frames that have an empty first ACK range
2016-06-28 22:14:43 +07:00
Marten Seemann
5e8c6e59f6
remove NackRanges from new AckFrame
2016-06-27 11:22:35 +07:00
Marten Seemann
d86d981319
rename LargestObserved to LargestAcked in QUIC 34 ACK frame
2016-06-24 14:30:39 +07:00
Marten Seemann
e6ecb1f40c
remove unused GetHighestInOrderPacketNumber method from QUIC 34 ACK frame
...
ref #182
2016-06-22 16:32:56 +07:00
Marten Seemann
1d412f2af6
check for consistent ACK ranges when writing QUIC 34 ACK frames
...
ref #182
2016-06-22 15:35:14 +07:00
Marten Seemann
9d3dd34017
correctly parse and write QUIC 34 ACK frames if packet 1 was lost
...
ref #182
2016-06-22 15:16:53 +07:00
Marten Seemann
288cb9e143
rename AckFrame to AckFrameLegacy
2016-06-21 19:51:26 +07:00
Marten Seemann
c01e16da71
validate parsed ACK ranges from a QUIC 34 ACK frame
...
ref #182
2016-06-21 19:49:24 +07:00
Marten Seemann
a92bd2bf55
don't write any timestamps in QUIC 34 ACK frames
...
ref #182
2016-06-21 18:14:30 +07:00
Marten Seemann
193f0dd793
correctly parse QUIC 34 ACK frames without timestamps
...
ref #182
2016-06-21 18:11:32 +07:00
Marten Seemann
4e183194c1
fix number of ACK blocks for gaps of 254 packets in QUIC 34 ACKs
...
ref #182
2016-06-21 14:20:21 +07:00
Marten Seemann
74ac98e7a5
calculate MinLength for QUIC 34 ACKs with long ranges of missing packets
...
ref #182
2016-06-21 14:11:19 +07:00
Marten Seemann
a2aed133b5
implement writing of ACK blocks with large gaps for QUIC 34 ACK frames
...
ref #182
2016-06-21 14:02:45 +07:00
Marten Seemann
5b0442f7e6
calculate correct MinLength for QUIC 34 ACK frames with ACK ranges
...
ref #182
2016-06-21 10:13:32 +07:00
Marten Seemann
cc5fe06db9
implement basic writing of ACK blocks for QUIC 34 ACK frames
...
ref #182
2016-06-21 00:24:44 +07:00
Marten Seemann
c681fd1469
don't panic if an ACK frame has too many NACK ranges
2016-06-20 14:48:21 +07:00
Marten Seemann
433920fc15
calculate correct MinLength of an ACK frame with a contiguous NACK range
...
fixes #183
2016-06-20 14:43:00 +07:00
Marten Seemann
29029978a0
determine if a QUIC 34 ACK frame reports any missing packets
...
ref #182
2016-06-20 14:05:20 +07:00
Marten Seemann
eb2414b085
parse QUIC 34 ACK frames with > 256 packets lost in a row
...
ref #182
2016-06-20 13:43:40 +07:00
Marten Seemann
963517e7be
implement basic ACK block parsing for QUIC 34 ACK frames
...
ref #182
2016-06-20 11:31:23 +07:00
Marten Seemann
9c5a1cce0e
add method to get highest in order ACKed packet number to new ACK frame
2016-06-19 18:53:04 +07:00
Marten Seemann
480ae993df
implement basic ACK frame parsing and writing for QUIC 34
...
ref #182
2016-06-19 16:02:00 +07:00
Marten Seemann
75f9df4edb
remove Entropy from StopWaitingFrames for QUIC 34
...
fixes #181
2016-06-19 13:50:13 +07:00
Marten Seemann
5651a7cfc1
pass QUIC version number to Frame.MinLength
...
ref #181
2016-06-19 13:43:58 +07:00
Marten Seemann
995c020b39
fix StreamID len in StreamFrame TypeByte if len was calculated by MinLength
...
fixes #166
2016-06-07 13:47:38 +07:00
Marten Seemann
c4c7b78288
correctly parse ACK frames with multiple NACK ranges for version 31
2016-06-06 20:23:41 +07:00
Lucas Clemente
d5aced6e03
small linter & typo fixes
2016-06-06 09:37:17 +02:00
Lucas Clemente
6a46465092
reduce calls to Debugf when not debugging to reduce slice allocs
...
ref #129
2016-06-04 15:13:46 +02:00
Lucas Clemente
240946dfde
replace version number literals with constants to make grepping easier
2016-06-03 11:09:48 +02:00
Marten Seemann
cf382be954
fix int overflow on 32 bit architecture in ACK frame test
2016-06-02 23:25:18 +07:00
Marten Seemann
2f49a9525a
add DataLen function to StreamFrame
2016-06-01 09:23:26 +07:00
Lucas Clemente
8fa3e62de9
implement parsing and writing of GOAWAY frames
2016-05-31 19:22:27 +02:00
Lucas Clemente
7c23ba7b07
validate lengths when parsing frames
...
ref #123
2016-05-27 23:07:29 +02:00
Marten Seemann
758334f6aa
move splitting of StreamFrames to StreamFrameQueue
...
work towards #146
2016-05-26 11:14:38 +07:00
Marten Seemann
c3f8837dfe
improve StreamFrame tests
2016-05-23 12:39:02 +07:00
Marten Seemann
33de224ce0
return error empty StreamFrames that don't have the FinBit set
2016-05-22 12:55:21 +07:00
Marten Seemann
55727ecd96
implement writing of RstStreamFrames
2016-05-19 16:39:32 +07:00
Lucas Clemente
7a97f34fac
don't panic 🤓
...
fixes #93
2016-05-18 18:29:42 +02:00
Marten Seemann
f147ebc9bb
implement basic connection level flow control
...
fixes #39
2016-05-18 17:30:08 +07:00
Lucas Clemente
1359c0e49c
fix a linter warning
2016-05-17 12:56:33 +02:00
Lucas Clemente
d0e6b993bb
use new error codes throughout the server
...
fixes #86
2016-05-17 12:49:59 +02:00
Lucas Clemente
feebfb8183
speed up tests
2016-05-17 11:31:32 +02:00
Lucas Clemente
bfaa4200df
move all error things to new qerr package, replacing errorcodes
2016-05-17 10:38:34 +02:00
Lucas Clemente
69e302812d
move ErrorCode type to errorcodes package
2016-05-17 00:25:51 +02:00
Marten Seemann
565f4c9fda
support largest observed packet number missing in ACK frames
...
fixes #63
2016-05-16 21:50:58 +07:00
Marten Seemann
fb6d90b813
cosmetic changes in tests
2016-05-16 18:32:08 +07:00