Commit Graph

62 Commits

Author SHA1 Message Date
gr1ffon
4ba42a8456 replace repo 2025-11-14 04:04:40 +03:00
Marten Seemann
2ac3b16df4 improve connection timer logic (#5339)
* simplify timer resets

As of Go 1.23, timer resets work as expected, and there’s no need to
read a (potentially) stale value from the timer channel.

* don't save the last time

* track if blocked

* remove unblock after sendingScheduled

* fix unblock logic when sending

* don't use fallthrough

* track the blocking mode

* remove stale comment
2025-09-24 10:43:01 +02:00
Marten Seemann
adc13be540 implement a memory-optimized time.Time replacement (#5334)
* implement a memory-optimized time.Time replacement

* monotime: properly handle systems with bad timer resolution (Windows)

* monotime: simplify Since
2025-09-14 08:12:10 +02:00
Marten Seemann
b2f24318af implement receiver side behavior for RESET_STREAM_AT (#5235)
* implement receiver side behavior for RESET_STREAM_AT

* simplify reliable offset tracking
2025-06-26 08:42:08 +02:00
Marten Seemann
eb08018a5c explictly expose all method on the Stream (#5214)
This hides the fact that a Stream is composed of a ReceiveStream and a
SendStream. This is an implementation detail and should not be exposed.
2025-06-09 11:14:58 +02:00
Marten Seemann
1169d97e81 convert ReceiveStream interface to a struct (#5173) 2025-06-01 06:08:18 +02:00
Marten Seemann
5a6187c870 reliably queue MAX_DATA frames (#4844) 2025-01-08 09:53:23 +08:00
Marten Seemann
40a768e77b flowcontrol: avoid calling time.Now(), pass time as a function parameter (#4731) 2024-11-28 17:46:22 +08:00
sukun
d22d579733 don't cancel streams after shutdown (#4673)
This ensures that `stream.Write` and `stream.Read` return the error code
from connection close, if the stream was closed as a result of
connection close.
2024-09-13 21:47:48 -07: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
42f04d4e02 refactor frame packing to logic to not access the streams map (#4596)
* avoid accessing the streams map when packing stream data

* avoid accessing the streams map when packing flow control frames

* remove streamGetter interface
2024-07-28 12:32:54 -07:00
Marten Seemann
4b87539b1e delay completion of the receive stream until the reset error was read (#4460)
* delay completion of the receive stream until the reset error was read

* fix handling of CancelRead after receiving a RESET_STREAM
2024-04-26 08:48:00 -07:00
Marten Seemann
06b421411d remove unused ReceiveStream.CloseRemote method (#4357) 2024-03-09 02:29:43 -08:00
Marten Seemann
f392c8a17b receive stream: put back the buffer for the last STREAM frame (#3832) 2023-06-02 03:22:51 -07:00
Marten Seemann
aa091fe672 remove unneeded tracking variables from streams, optimize memory layout (#3699)
* remove the closedForShutdown boolean in the send stream

* remove the canceledWrite boolean in the send stream

* remove the closedForShutdown boolean in the receive stream

* remove the canceledRead boolean in the receive stream

* remove the resetRemotely boolean in the receive stream

* optimize memory layout of the receiveStream

This brings it down from 200 to 192 bytes.
2023-02-13 13:57:00 -08:00
Marten Seemann
3f9d8feab2 return StreamErrors for all kinds of stream cancelations (#3681)
* fix: return typed errors when after cancelling actions

This is errors.Is'ed by libp2p and the fmt.Errorf messages didn't passed that test:
82315917f7/p2p/transport/quic/stream.go (L23)

* replace StreamErrorAction with a local / remote flag

Co-authored-by: Jorropo <jorropo.pgm@gmail.com>
2023-01-26 12:58:06 -08: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
0f352f2653 remove unused version parameter from receive stream constructor 2023-01-18 20:51:59 +13:00
Marten Seemann
ec118e440c protect against concurrent use of Stream.Read (#3380) 2022-04-25 03:58:11 -07:00
Marten Seemann
344feb9ea5 don't unlock the receive stream mutex for copying from STREAM frames 2021-10-16 19:24:28 +02:00
Marten Seemann
90727cb41a introduce a quic.StreamError type and use it for stream cancelations 2021-05-01 09:39:52 +07:00
Marten Seemann
f5238bf7b1 move the ApplicationErrorCdoe to the qerr package 2021-05-01 09:38:49 +07:00
Marten Seemann
8752576f26 run gofumpt, enable the gofumpt linter 2020-10-26 09:33:35 +07:00
Marten Seemann
838dd6e81a rename StreamFrame.FinBit to Fin 2020-07-02 16:41:43 +07:00
Marten Seemann
865332015c rename ResetStreamFrame.ByteOffset to FinalSize 2020-07-02 16:41:43 +07:00
Marten Seemann
652125367c remove unused readOffset member variable in receiveStream 2020-05-23 07:53:13 +07:00
Marten Seemann
996dd42055 move deadlineTimer declaration out of the Read loop 2020-05-04 18:46:51 +07:00
Marten Seemann
93cee1e07b stop the deadline timer in Stream.Read and Write 2020-05-03 11:22:58 +07:00
Marten Seemann
529e14d0cc simplify onStreamCompleted in the receiveStream 2019-11-09 11:36:09 +07:00
Marten Seemann
dc66c8a4e4 fix handling of RESET_STREAM frames after receiving the final offset 2019-11-09 11:36:09 +07:00
Marten Seemann
63585d1b5e fix handling of duplicate FIN bits after a stream was canceled 2019-11-09 11:35:58 +07:00
Marten Seemann
6b22f36d82 add the stylecheck linter 2019-09-17 13:50:19 +07:00
Marten Seemann
ba1bcf6e0c use the STREAM frame buffer for receiving data 2019-09-04 16:58:44 +07:00
Marten Seemann
2787a6051a remove some defer statements in the stream 2019-01-24 16:59:13 +07:00
Marten Seemann
46b1d7a1fc call the onStreamCompleted callback without holding the stream mutex 2019-01-24 16:59:13 +07:00
Marten Seemann
ca939df44e remove the error return value from Stream.CancelRead 2019-01-24 16:00:11 +07:00
Marten Seemann
1d7d532035 release connection-level flow control credit when a stream is reset 2019-01-23 12:49:48 +07:00
Marten Seemann
1864e301ef move tracking of the final stream offset to the stream 2019-01-23 12:48:37 +07:00
Marten Seemann
9888db457f don't send a STOP_SENDING if the stream was already reset by the peer 2019-01-23 12:48:37 +07:00
Marten Seemann
bfbf0bca48 always queue window updates when data is being read
There's no need to have a separate call in the flow controller interface
for this.
2019-01-22 23:46:12 +07:00
Marten Seemann
0be8e033ab fix race conditions when setting read and write deadlines 2018-12-20 14:43:11 +06:30
Marten Seemann
022189dfda rename the RST_STREAM frame to RESET_STREAM frame 2018-11-04 12:26:02 +07:00
Marten Seemann
3266e36811 drop support for gQUIC 2018-10-30 10:20:39 +07:00
Marten Seemann
82508f1562 use tls-tris instead of mint 2018-10-26 16:18:49 +07:00
Marten Seemann
d9edacf711 use a time.Timer for read deadlines 2018-10-18 18:01:03 +01:00
Marten Seemann
8bd6168511 never increase the flow control limit for the crypto stream 2018-09-19 09:00:23 -04:00
Marten Seemann
74662e8dae rename the streamFrameSorter to frameSorter 2018-08-26 10:10:00 +07:00
Marten Seemann
53d76b6664 only use duplicate stream data error internally in the streamFrameSorter 2018-08-26 09:49:11 +07:00
Marten Seemann
8dc4b2d564 pass the stream data, not the STREAM frame, to the streamFrameSorter 2018-08-26 09:26:59 +07:00
Marten Seemann
dbada7ad02 store stream data, not STREAM frames, in the streamFrameSorter 2018-08-26 08:59:48 +07:00