-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Closed
Labels
area-System.Net.QuicenhancementProduct code improvement that does NOT require public API changes/additionsProduct code improvement that does NOT require public API changes/additions
Milestone
Description
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-- outstandingAcceptConnection()calls.QuicConnection-- outstandingConnect(),AcceptStream(),Close()calls. Plus any already open streams.QuicStream-- outstandingRead(),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
Labels
area-System.Net.QuicenhancementProduct code improvement that does NOT require public API changes/additionsProduct code improvement that does NOT require public API changes/additions