Commit Graph

153 Commits

Author SHA1 Message Date
Marten Seemann
71af5758e2 remove the ShouldSendFin method from the stream
GetDataForWriting now has two return parameters: the data and if a FIN
should be sent.
2017-12-08 14:05:14 +07:00
Marten Seemann
085624be20 replace stream.LenOfDataForWriting by HasDataForWriting
The return value (the length of data for writing) was only used to
determine if the stream has data for writing. Therefore it's easier to
just return a bool.

No functional change expected.
2017-12-08 14:04:00 +07:00
Marten Seemann
25a6dc9654 implement stateless handling of Initial packets for the TLS server 2017-12-08 08:45:54 +07:00
Marten Seemann
f662822486 use stream 0 for the crypto stream when using TLS 2017-11-04 15:22:07 +07:00
Marten Seemann
268c3859fc remove the flow control manager 2017-10-20 21:34:09 +07:00
Marten Seemann
95a971f322 make the flow control package internal 2017-08-30 00:27:44 +07:00
Marten Seemann
f1ada87dcf make the protocol package internal 2017-08-30 00:19:44 +07:00
Marten Seemann
ed522ebbce make wire an internal package 2017-08-29 23:51:56 +07:00
Marten Seemann
88afad8722 rename package frames to wire 2017-08-29 23:27:15 +07:00
Marten Seemann
8ef69143ba implement a context for the stream
The context is cancelled when the write-side of the stream is closed.
2017-08-02 11:28:17 +07:00
Marten Seemann
77d4573d9b return an error when Write is called on a closed stream 2017-07-29 00:19:39 +07:00
Marten Seemann
6546e13e26 implement net.Error interface for stream deadline expiration errors 2017-07-24 21:45:07 +07:00
Marten Seemann
e09993403d add stream deadlines to the Stream interface 2017-07-15 23:46:15 +07:00
Marten Seemann
1acdc5f18e implement write deadlines 2017-07-15 23:46:15 +07:00
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