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

HTTP/3: SocketsHttpHandler.ConnectCallback #48617

Closed
JamesNK opened this issue Feb 22, 2021 · 10 comments
Closed

HTTP/3: SocketsHttpHandler.ConnectCallback #48617

JamesNK opened this issue Feb 22, 2021 · 10 comments
Labels
area-System.Net.Http enhancement Product code improvement that does NOT require public API changes/additions
Milestone

Comments

@JamesNK
Copy link
Member

JamesNK commented Feb 22, 2021

I looked at the source for SocketsHttpHandler and it doesn't appear to use ConnectCallback when making a HTTP/3 connection.

@ghost
Copy link

ghost commented Feb 22, 2021

Tagging subscribers to this area: @dotnet/ncl
See info in area-owners.md if you want to be subscribed.

Issue Details

I looked at the source for SocketsHttpHandler and it doesn't appear to use ConnectCallback when making a HTTP/3 connection.

Author: JamesNK
Assignees: -
Labels:

area-System.Net.Http

Milestone: -

@dotnet-issue-labeler dotnet-issue-labeler bot added the untriaged New issue has not been triaged by the area owner label Feb 22, 2021
@JamesNK JamesNK changed the title SocketsHttpHandler.ConnectCallback and HTTP/3 HTTP/3: SocketsHttpHandler.ConnectCallback Feb 22, 2021
@geoffkizer
Copy link
Contributor

Yeah, this is not implemented yet.

What specific capability are you looking for here?

Because HTTP3 works on top of QUIC, this specific callback can't support replacing the QUIC connection -- it works in terms of Stream.

If the desire here is to control the establishment of the QUIC connection, then we would need a new API like QuicConnectCallback. However, there is currently no equivalent of Stream for QUIC, that is, an abstraction for a multiplexed connection. That means you couldn't replace the QUIC connection with an arbitrary implementation, which limits the usefulness of this.

@JamesNK
Copy link
Member Author

JamesNK commented Feb 23, 2021

I was thinking about it in the context of #45246 (comment)

@scalablecory
Copy link
Contributor

I was thinking about it in the context of #45246 (comment)

In practice, just making a "GET /" would be just as good for establishing the connection without a meaningful request right?

@ManickaP
Copy link
Member

ManickaP commented Mar 4, 2021

Triage: we should have this in 6.0

@ManickaP ManickaP added this to the 6.0.0 milestone Mar 4, 2021
@ManickaP ManickaP removed the untriaged New issue has not been triaged by the area owner label Mar 4, 2021
@geoffkizer
Copy link
Contributor

Hi Triage,

What specific capability are you looking for here?

See my comment above.

@karelz karelz added the enhancement Product code improvement that does NOT require public API changes/additions label May 4, 2021
@karelz karelz modified the milestones: 6.0.0, Future May 6, 2021
@karelz
Copy link
Member

karelz commented Sep 21, 2021

Triage: We believe this is not technically possible, closing.

@karelz karelz closed this as completed Sep 21, 2021
@karelz karelz modified the milestones: Future, 7.0.0 Sep 21, 2021
@scalablecory
Copy link
Contributor

@karelz we should have a QuicConnectCallback at some point; I think ideally 7.0. Is this tracked elsewhere?

@wfurt
Copy link
Member

wfurt commented Sep 21, 2021

Is that even feasible @scalablecory? For h1/2 you can get back Stream but I don't think that is sufficient for QUIC.

@scalablecory
Copy link
Contributor

Is that even feasible @scalablecory? For h1/2 you can get back Stream but I don't think that is sufficient for QUIC.

Right, the existing callback does not work. But, we still need a new one to enable that same functionality for QUIC, for the same reasons as the current callback existing.

An idea (we've talked about this a few times before) to explore for this:

  • Make QuicConnection and QuicStream abstract.
  • Make a static QuicConnection.ConnectAsync(...) that returns an internal MsQuic-backed connection.
  • Make QuicConnectCallback return a QuicConnection.

@ghost ghost locked as resolved and limited conversation to collaborators Nov 3, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-System.Net.Http enhancement Product code improvement that does NOT require public API changes/additions
Projects
None yet
Development

No branches or pull requests

6 participants