Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

merge histeria quic-go #1

Merged
merged 389 commits into from
Feb 19, 2024
Merged

merge histeria quic-go #1

merged 389 commits into from
Feb 19, 2024

Conversation

chajiuqqq
Copy link
Owner

No description provided.

marten-seemann and others added 30 commits June 13, 2023 23:44
This more closely matches what the connection does.
* docs: add detailed description of the quic package

* Apply suggestions from code review

Co-authored-by: Prithvi Shahi <shahi.prithvi@gmail.com>

* some more README improvements

---------

Co-authored-by: Prithvi Shahi <shahi.prithvi@gmail.com>
…uic-go#3900)

* - fix 3898

* fix gofumpt

* - refactoring: inline  serveListener in ServeListener
- use ServeListener in s.serveConn
- updated doc for the returned error

---------

Co-authored-by: Marten Seemann <martenseemann@gmail.com>
* close Transport: check for possibly uninitialized fields

* close Transport: close Conn, as conn might not be initialized

* close Transport: add test case
* add context to ReceiveMessage

* add newlines

---------

Co-authored-by: Marten Seemann <martenseemann@gmail.com>
…#3931)

* Remove conn from multiplexer when (*Transport).init fails

* Transport: AddConn to multiplexer directly before start listening

* Update transport_test.go

---------

Co-authored-by: Marten Seemann <martenseemann@gmail.com>
* automatically add date header if not already set

* improve comment for Date header

---------

Co-authored-by: Marten Seemann <martenseemann@gmail.com>
quic-go#3949)

The UDP send and receive buffer is now increased when calling
OptimizeConn.
* implement FlushError interface for http3 response writer

* move where to log flush error
marten-seemann and others added 29 commits January 28, 2024 21:30
…et (quic-go#4276)

Currently not used, but this is useful when crafting Initial packets
sent from the client. No functional change expected.
…o#4284)

Instead, expose the FrameParser struct. This allows us to embed it
directly into the connection struct, avoiding a pointer indirection.
This package can be useful outside of quic-go. We're not making any API
guarantees at this point.
Fortunately, qtls is a thing of the past.
…go#4288)

* ackhandler: don't delay ACKs for Initial and Handshake packets

* ackhandler: embed the receivedPacketHistory
* wire: optimize generation of Version Negotiation packets

* protocol: optimize adding greased version numbers
Events are appended to a channel, which is able to handle concurrect writes.
…4300)

The qlog writer simply records events, puts them into a channel, and
consumes these events in a separate Go routine (by serializing them).

The ConnectionTracer is the one generating those events.
* logging: add a Close function to the Tracer

* close the Tracer when the Transport is closed
…on (quic-go#4311)

* handshake: validate HKDF-Expand-Label against crypto/tls implementation

* handshake: add a benchmark for HKDF-Expand-Label
* avoid lock contention when accepting new connections

The server used to hold the packet handler map's lock while creating the
connection struct for a newly accepted connection. This was intended to
make sure that no two connections with the same Destination Connection
ID could be created.

This is a corner case: it can only happen if two Initial packets with
the same Destination Connection ID are received at the same time. If
the second one is received after the first one has already been
processed, it would be routed to the first connection. We don't need to
optimized for this corner case. It's ok to create a new connection in
that case, and immediately close it if this collision is detected.

* only pass 0-RTT to the connection if it was actually accepted
…quic-go#4314)

The slice will be allocated when STREAM frames are appended. By not
preallocating it is made sure that the slice is only created in cases
where STREAM frames are actually sent in this packet.
…ion (quic-go#4322)

This technically violates the stateless reset handling logic described
in RFC 9000 section 10.3.1 (see comment), but it saves one map lookup in
the hot path.
…uic-go#4319)

This prevents a race condition when the underlying ClientSessionCache
provided by the application returns the same session ticket for multiple
connections. Reusing session tickets is explicitly recommended against
by both RFC 8446 and RFC 9001, but it's not forbidden. This fix only
benefits applications that compromise their users' privacy by reusing
session tickets.
@chajiuqqq chajiuqqq merged commit 9def3ad into chajiuqqq:master Feb 19, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.