Skip to content

[QUIC] Finalize QUIC dispose model #32142

Closed
@scalablecory

Description

@scalablecory

Socket currently has a behavior of throwing SocketError.OperationAborted for outstanding operations when Dispose() is called.

We need to decide how Dispose() will trigger outstanding operations:

  • QuicListener -- outstanding AcceptConnection() calls.
  • QuicConnection -- outstanding Connect(), AcceptStream(), Close() calls. Plus any already open streams.
  • QuicStream -- outstanding Read(), Write(), Shutdown(), Abort() calls.

The current model throws an OperationAbortedException, mimicing the Socket API; We should look at how consistent we want to be here, and if we want to adjust for usability/perf reasons, such as having AcceptConnection() or having AcceptStream() return null rather than throwing.

We should also consider how this interacts with a user-initiated connection/stream abort, and with a server-initiated connection/stream abort. In sockets, a variety of error codes can be thrown for these, one of them being SocketError.OperationAborted.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area-System.Net.QuicenhancementProduct code improvement that does NOT require public API changes/additions

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions