Commit Graph

113 Commits

Author SHA1 Message Date
Marten Seemann
576aa1747f simplify stream ID handling in the incoming streams map (#5207)
* simplify stream ID handling in the incoming streams map

No functional change expected.

* protocol: move stream ID constant definition
2025-06-08 12:25:36 +02:00
Marten Seemann
1169d97e81 convert ReceiveStream interface to a struct (#5173) 2025-06-01 06:08:18 +02:00
Marten Seemann
78e77bcfdb convert SendStream to a struct (#5172) 2025-06-01 05:53:53 +02:00
Marten Seemann
eb656df2fe convert Stream interface to a struct (#5149) 2025-06-01 05:40:05 +02:00
Marten Seemann
a1aa369464 don't use net.Errors for streams map error (#5060) 2025-04-19 16:16:47 +02:00
Marten Seemann
af9fa7a555 queue stream-related control frames in the respective stream (#4610)
* use a separate method for queueing control frames from the streams map

* queue stream-related control frames in the respective stream
2024-08-04 15:42:56 -07:00
Marten Seemann
b52c33939d introduce a StreamLimitReachedError for Connection.Open{Uni}Stream (#4579)
Using a concrete type is preferable to relying on interpreting the
return values from net.Error.Timeout and net.Error.Temporary, especially
since the latter has been deprecated since Go 1.18.
2024-06-28 06:58:28 -07:00
Marten Seemann
e310b80cf3 expose the connection tracing ID on the stream context (#4414)
This is especially interesting for HTTP servers: They can now learn
which connection a request was received on.
2024-04-06 07:41:25 -07:00
Marten Seemann
58cedf7a4f rename module, adjust import paths to quic-go/quic-go (#3680) 2023-01-21 19:53:57 -08:00
Marten Seemann
d4a0793b6a remove unused version parameter from streams map constructor 2023-01-18 20:52:00 +13:00
Marten Seemann
d972a5e8f2 remove unused version parameter from stream constructor 2023-01-18 20:52:00 +13:00
Marten Seemann
0f352f2653 remove unused version parameter from receive stream constructor 2023-01-18 20:51:59 +13:00
Marten Seemann
1646fd545e refactor send stream to remove version from constructor 2023-01-18 20:51:59 +13:00
Marten Seemann
621e9d4642 use a generic streams map for incoming streams 2022-08-11 18:31:45 +04:00
Marten Seemann
bebff462c8 use a generic streams map for outgoing streams (#3488) 2022-08-11 05:14:52 -07:00
Marten Seemann
592fb9cad9 introduce a dedicated qerr.TransportError and qerr.ApplicationError 2021-05-01 09:38:48 +07:00
Marten Seemann
7cd4dea764 update the flow control windows of streams opened in 0-RTT
The server might have increased the initial flow control window. We need
to make sure to inform all streams opened during during the 0-RTT
period.
2021-03-12 15:09:50 +08:00
Marten Seemann
8b63039664 add a function to reset the streams map after 0-RTT rejection 2021-03-09 17:59:49 +08:00
Marten Seemann
8a0b1dd78d remove unused error return value from HandleMaxStreamsFrame 2021-03-07 12:36:50 +08:00
Marten Seemann
c7d3aeea3d move the transport parameter stream limit check to the parser 2020-12-18 13:00:33 +07:00
Marten Seemann
6217ec55fd remove stray comment in the streams map 2020-12-18 12:34:04 +07:00
Marten Seemann
6d61dccc2f rename the constructors for the various qerr.Error flavors 2020-03-21 10:53:03 +07:00
Marten Seemann
0ef4f06189 move the transport parameters from the handshake to the wire package 2020-03-13 16:20:11 +07:00
Marten Seemann
2c2b5da612 Merge pull request #2209 from lucas-clemente/stream-count-errors
throw FRAME_ENCODING_ERRORs when MAX_STREAMs and STREAMS_BLOCKED frame exceed the maximum stream count
2019-11-09 11:37:23 +07:00
Marten Seemann
1e7c7842b9 move overflow check in MAX_STREAMS frame to frame parser 2019-11-08 11:44:56 +07:00
Marten Seemann
394ff04fb1 fix error message for stream deletion errors 2019-11-08 11:00:43 +07:00
Marten Seemann
2b8cece60a add a context to Session.Open{Uni}StreamSync 2019-06-22 19:37:21 +08:00
Marten Seemann
5550ba2c3b add a context to Session.Accept{Uni}Stream 2019-06-22 19:37:11 +08:00
Marten Seemann
857e4ae9a9 use stream numbers, not stream ids, in the stream maps 2019-06-05 20:01:51 +08:00
Marten Seemann
a8633a952c introduce a type for the stream number 2019-06-05 17:45:17 +08:00
Marten Seemann
42fdeab091 remove stray print statement in streams map 2019-06-05 13:23:17 +08:00
Marten Seemann
51c9c42adc reject transport parameters with too large stream counts 2019-04-01 11:58:18 +09:00
Marten Seemann
7b02b87026 reject MAX_STREAMS frames with too large stream counts 2019-04-01 11:57:23 +09:00
Marten Seemann
a2e48e204b return a net.Error when opening streams
net.Error.Temporary() will be true if no stream can be opened when the
peer's stream limit is reached.
2019-01-06 17:18:43 +07:00
Marten Seemann
9518c90c0a implement and use the MAX_STREAMS frame 2018-11-10 09:38:50 +07:00
Marten Seemann
0f931ca54e use a uint64 for stream counts 2018-11-10 09:05:33 +07:00
Marten Seemann
e8de94485c move more stream ID logic to the protocol package 2018-11-10 09:05:33 +07:00
Marten Seemann
44243b4f52 use the stream helper function in the streamsMap 2018-11-01 15:50:47 +07:00
Marten Seemann
82508f1562 use tls-tris instead of mint 2018-10-26 16:18:49 +07:00
Marten Seemann
b40942d39e send stream counts, not stream IDs, in the transport parameters 2018-03-16 17:41:21 +00:00
Marten Seemann
11af98e338 run misspell in gometalinter 2018-02-23 22:39:08 +08:00
Marten Seemann
58b20c6009 make the number of incoming streams configurable, for IETF QUIC 2018-02-23 22:15:31 +08:00
Marten Seemann
1ec720f2f2 implement sending of STREAM_ID_BLOCKED frames 2018-02-06 10:04:40 +08:00
Marten Seemann
8e332c2e13 implement sending of MAX_STREAM_ID frames
We can now impose a limit on the number of stream for IETF QUIC, and
advertise that in the transport parameters during the handshake.
2018-02-06 08:32:16 +08:00
Marten Seemann
e36b8d8e30 throw an error if the peer tries to open a too high stream 2018-02-06 08:30:58 +08:00
Marten Seemann
46e20ce8c9 implement handling of MAX_STREAM_ID frames 2018-02-06 08:30:58 +08:00
Marten Seemann
02949853f7 use the new stream maps for the IETF QUIC streams map 2018-02-06 07:53:34 +08:00
Marten Seemann
25b8052985 return the putStream error in the streamsMap 2018-02-02 12:01:04 +08: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