Skip to content

web-transport-quiche: connection polling accumulates duplicate Wakers #298

Description

@kixelated

Summary

ConnectionClosed::poll appends a cloned Waker on every pending poll without replacement or deduplication: connection.rs.

The driver invokes this on every connection poll while not draining: driver.rs. Handshake and stream-opening lists use similar append-only vectors.

Impact

A long-lived active connection retains another Waker for every driver poll until close. Cancelled futures leave stale Wakers, and close may eventually wake a very large list.

Suggested fix

Use AtomicWaker for single waiters or a cancellation-safe/deduplicated collection for multiple tasks. Add a test that repeatedly polls pending state with the same Waker and asserts stable waiter count.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions