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

fix(server): Fix race condition in client dispatcher (#2419) #3041

Merged
merged 1 commit into from Nov 7, 2022

Commits on Nov 2, 2022

  1. fix(server): Fix race condition in client dispatcher (hyperium#2419)

    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 committed Nov 2, 2022
    Configuration menu
    Copy the full SHA
    9f8f532 View commit details
    Browse the repository at this point in the history