Marten Seemann
980d0e398f
don’t add bytes read after receiving a RST_STREAM to flow controller
2017-01-09 10:15:12 +07:00
Marten Seemann
d6a0a145a4
correclty detected the closed state of a stream
...
fixes #380
2017-01-09 09:49:45 +07:00
Marten Seemann
7a91794292
send RST_STREAM frames
...
ref #380
2017-01-09 09:49:44 +07:00
Marten Seemann
c705a19f11
fix race condition in stream
2017-01-09 09:49:44 +07:00
Marten Seemann
57e6749955
stream code cleanup
2017-01-09 09:49:44 +07:00
Marten Seemann
a86f31d789
implement a stream.Reset() method
...
ref #380
2017-01-09 09:49:44 +07:00
Marten Seemann
4e0ef58bab
allow stream.Read for streams that a RST was received for
...
and a lot of code improvements
fixes #385
2017-01-09 09:49:43 +07:00
Marten Seemann
9e09198df6
don’t return data for writing from a stream if it was closed with an error
2017-01-03 16:07:18 +07:00
Marten Seemann
74edf9caad
improve errors returned for flow control violations
2017-01-03 12:01:27 +07:00
Lucas Clemente
53ae201fd2
remove stream.ReadByte
2016-09-05 23:22:49 +02:00
Lucas Clemente
d93de7cfd0
do some consistency checks before accessing slices in stream
...
This is a workaround for the security part of #293 .
2016-08-17 11:39:57 +02:00
Lucas Clemente
17add945e5
fix a stream race condition
2016-08-17 11:14:41 +02:00
Marten Seemann
f0f500a218
correctly treat nils and empty slices in stream.Write
2016-08-16 19:49:36 +07:00
Marten Seemann
50d6ae205d
change order of parameters in Stream constructor
2016-08-07 13:12:10 +07:00
Marten Seemann
143c3ea16b
remove unused connectionParametersManager from Stream
2016-08-07 13:09:44 +07:00
Lucas Clemente
62b06a003c
fix a race condition in stream.Write
2016-08-05 11:33:19 +02:00
Lucas Clemente
0e05534909
improve main package test coverage
...
ref #241
2016-08-02 11:49:25 +02:00
Lucas Clemente
5a00fd89f6
simplify stream now that the frame sorter handles gaps properly
2016-08-02 11:34:12 +02:00
Lucas Clemente
3d0ed0d1f9
trigger sending when stream data is read
...
fixes #223
2016-07-28 16:52:04 +02:00
Lucas Clemente
b6758e67e0
minor stream optimization
2016-07-26 17:12:42 +02:00
Lucas Clemente
ebf41d9f26
minor stream optimizations
2016-07-26 16:30:33 +02:00
Lucas Clemente
73db4d7a04
remove stream.contributesToConnectionFlowControl
2016-07-11 17:54:22 +02:00
Lucas Clemente
1bc8c882c9
remove session pointer from stream and use a lambda to signal new data
2016-07-11 14:57:54 +02:00
Lucas Clemente
f04d14ac3e
use flow controller for window update handling, remove windowUpdateMgr
2016-07-11 14:54:32 +02:00
Lucas Clemente
bb8464efe0
copy the slice passed to stream.Write
2016-07-08 18:21:45 +02:00
Lucas Clemente
f8130288a3
fix early garbage collection of streams
...
ref #83
2016-07-08 18:21:45 +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
5d02033f0f
use FlowControlManager in Stream for Reading data
2016-06-15 19:39:50 +07:00
Marten Seemann
443fd530db
send OverlappingStreamData errors for overlapping StreamFrame data
...
fixes #115
2016-06-01 16:57:01 +07:00
Marten Seemann
9476ae499c
implement a buffer for received StreamFrames
...
fixes #116 , ref #115
2016-06-01 14:33:12 +07:00
Marten Seemann
2f49a9525a
add DataLen function to StreamFrame
2016-06-01 09:23:26 +07:00
Lucas Clemente
4b2ab55435
fix a race when multiple requests were handled at the same time
...
fixes #157
2016-05-31 19:05:33 +02:00
Marten Seemann
93771708ae
fix Writing of multiple StreamFrames in Stream.Write method
...
fixes #147
2016-05-26 11:04:48 +07:00
Marten Seemann
be34c9e3f4
never write too much data in Stream.Write()
...
ref #145
2016-05-26 09:13:14 +07:00
Lucas Clemente
17865dbba7
fix a panic in stream with large window updates
...
fixes #143
2016-05-25 13:12:06 +02:00
Marten Seemann
d571c0bfd5
remove stream from BlockManager when a WindowUpdate increases its offset
...
fixes #130
2016-05-20 12:26:10 +07:00
Marten Seemann
c748a8dfc0
create FlowController interface
2016-05-19 19:49:33 +07:00
Marten Seemann
9930de68c8
send stream-level Blocked frames at the right time
...
fixes #110
2016-05-19 11:53:51 +07:00
Lucas Clemente
b185ea04e1
add CloseRemote method to stream
...
ref #109
2016-05-18 13:33:36 +02:00
Marten Seemann
f147ebc9bb
implement basic connection level flow control
...
fixes #39
2016-05-18 17:30:08 +07:00
Marten Seemann
9ecbfa65ac
add methods needed for connection-level FlowController
...
ref #39
2016-05-18 12:30:25 +07:00
Marten Seemann
e0801262bc
actually send Blocked frames
...
fixes #100
2016-05-18 12:06:14 +07:00
Marten Seemann
daeb601cdc
keep track of highest byte received in FlowController
...
ref #39
2016-05-18 09:32:36 +07:00
Marten Seemann
b9e141d277
make the FlowController thread-safe
2016-05-18 00:11:52 +07:00
Marten Seemann
42f3091e1b
send Blocked frames for flow control blocked streams
...
fixes #100
2016-05-17 19:00:11 +07:00
Lucas Clemente
d0e6b993bb
use new error codes throughout the server
...
fixes #86
2016-05-17 12:49:59 +02:00
Marten Seemann
62da35d613
implement a basic flow controller
...
needed for #39 , #100 , #106
2016-05-17 15:21:30 +07:00
Marten Seemann
0d4dd8869d
detect stream flow control violations
...
fixes #97
2016-05-16 18:15:40 +07:00
Marten Seemann
4de41d0737
set offset in WindowUpdates based on read position and window increment
...
fixes #105
2016-05-16 17:00:06 +07:00
Lucas Clemente
af522c1538
privatize session.updateReceiveFlowControlWindow
...
ref #60
2016-05-15 18:50:04 +02:00