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

Cherry-pick 3041 to master #3049

Merged
merged 1 commit into from
Nov 7, 2022
Merged

Cherry-pick 3041 to master #3049

merged 1 commit into from
Nov 7, 2022

Commits on Nov 7, 2022

  1. fix(http2): Fix race condition in client dispatcher (#3041)

    There exists a race condition in ClientTask::poll() when the request
    that is sent via h2::client::send_request() is pending open. A task will
    be spawned to wait for send capacity on the sendstream. Because this
    same stream is also stored in the pending member of
    h2::client::SendRequest the next iteration of the poll() loop can call
    poll_ready() and call wait_send() on the same stream passed into the
    spawned task.
    
    Fix this by always calling poll_ready() after send_request(). If this
    call to poll_ready() returns Pending save the necessary context in
    ClientTask and only spawn the task that will eventually resolve to the
    response after poll_ready() returns Ok.
    jfourie1 authored and seanmonstar committed Nov 7, 2022
    Configuration menu
    Copy the full SHA
    e01a306 View commit details
    Browse the repository at this point in the history