37 Commits

Author SHA1 Message Date
gr1ffon
4ba42a8456 replace repo 2025-11-14 04:04:40 +03: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
1d8f3f281a ci: update golangci-lint to v2 (#5007) 2025-03-30 07:16:14 +02:00
Marten Seemann
5a6187c870 reliably queue MAX_DATA frames (#4844) 2025-01-08 09:53:23 +08:00
Marten Seemann
a584e58099 flowcontrol: reset the connection send window when 0-RTT is rejected (#4764) 2024-12-22 11:36:14 +08:00
Marten Seemann
2e4cef10ab flowcontrol: rewrite tests, use require instead of Ginkgo (#4734) 2024-11-30 14:27:57 +08:00
Marten Seemann
36ed693996 flowcontrol: fix timestamp used for receive window auto-tuning (#4735) 2024-11-29 13:59:22 +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
Marten Seemann
90a824a849 flowcontrol: fix start of the flow-control auto-tuning period (#4730)
The period should start when the first frame is received, not when the data is
first read. This makes a difference when the first STREAM frame is received
out of order.
2024-11-28 15:48:42 +08: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
22411e16d5 utils: switch to standard library min and max functions (#4218)
These functions were added in Go 1.21.
2023-12-27 21:19:13 -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
43bde14cf7 implement generic Min and Max functions 2022-08-10 14:59:05 +02:00
Marten Seemann
f9904c7c45 add a callback to block window increases to the connection flow controller 2022-01-14 12:03:30 +04:00
Marten Seemann
a98e60c28c fix some typos in documentation and tests 2022-01-14 11:23:14 +04:00
Marten Seemann
592fb9cad9 introduce a dedicated qerr.TransportError and qerr.ApplicationError 2021-05-01 09:38:48 +07:00
Marten Seemann
a04a0072fb add a function to reset the connection flow controller 2021-03-09 17:59:48 +08:00
Marten Seemann
655632b116 avoid duplicate mutex locking when reading data 2020-11-20 15:45:38 +07:00
Marten Seemann
741dc28d74 move the RTTStats to the utils package
The RTTStats are used by the logging package. In order to instrument the
congestion package, the RTTStats can't be part of that package any more
(to avoid an import loop).
2020-07-23 11:53:08 +07:00
Marten Seemann
66eeff040b reduce calls to time.Now() from the flow controller 2020-06-07 10:46:24 +07:00
Marten Seemann
6d61dccc2f rename the constructors for the various qerr.Error flavors 2020-03-21 10:53:03 +07:00
Marten Seemann
9c09e84765 use IETF QUIC transport error codes 2019-03-06 13:43:18 +09: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
3ffea5d8c4 internalize the qerr package 2018-11-11 12:44:16 +07:00
Marten Seemann
50397a979c only send BLOCKED frames if there is more data to send 2018-07-30 05:06:11 +07:00
Marten Seemann
08160ab18f queue connection-level window updates from the flow controller directly
It is not sufficient to check for connection-level window updates every
time a packet is sent. When a connection-level window update needs to be
sent, we need to make sure that it gets sent immediately (i.e. call
scheduleSending() in the session).
2018-05-08 15:17:45 +09:00
Marten Seemann
7d1f17e5d6 log all connection flow control window increases 2018-05-06 22:07:54 +09:00
Marten Seemann
948eef3e42 create a logger interface and use it everywhere 2018-04-04 13:03:28 +07:00
Marten Seemann
3b82628dbe internalize ackhandler and congestion 2018-02-02 08:40:56 +08:00
Marten Seemann
5371f804f8 don't report blocked streams as active for sending data 2018-01-03 00:18:33 +07:00
Marten Seemann
f7526b9883 rewrite flow control auto-tuning 2017-12-21 18:02:14 +07:00
Marten Seemann
ac05343b00 rename window increment to window size in the flow controller
No functional change expected.
2017-12-21 17:58:03 +07:00
Marten Seemann
15af2c6e41 Merge pull request #1037 from lucas-clemente/flow-control-mutexes
remove flow control mutexes for the sending data
2017-12-16 08:57:59 +07:00
Marten Seemann
bfdeeae70c remove flow control mutexes for the sending data
Receiving MAX_{STREAM}_DATA frames and sending data is all done
sequentially, so we don't need a mutex there.
2017-12-16 00:23:48 +07:00
Marten Seemann
357a2f6213 don't defer unlocking the mutex when getting window updates 2017-12-15 19:49:41 +07:00
Marten Seemann
268c3859fc remove the flow control manager 2017-10-20 21:34:09 +07:00
Marten Seemann
c53a83535e split the flow controller in stream and connection flow controller 2017-10-20 21:12:19 +07:00