Commit graph

89 commits

Author SHA1 Message Date
Marten Seemann
5720e8af7d implement read deadlines 2017-07-15 23:46:15 +07:00
Marten Seemann
a70ae86f5a replace the sync.Cond for stream.Write() by a channel 2017-07-15 23:46:15 +07:00
Marten Seemann
5fbd52158f replace the sync.Cond for stream.Read() by a channel 2017-07-15 23:46:15 +07:00
Marten Seemann
c63be8c544
return the length of data written when the stream errors 2017-06-14 12:08:26 +02:00
Marten Seemann
987905149b
run gofmt to fix ordering of imports 2017-06-13 18:07:22 +02:00
Marten Seemann
c0b09c8646 make utils an internal package 2017-06-09 22:28:40 +02:00
Lucas Clemente
1311629830 Remove unnecessary error return value in newStream 2017-06-08 11:09:11 +02:00
Lucas Clemente
a7c60e3229 Fix a data race in stream.Read 2017-04-30 15:30:31 +02:00
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