Closed Bug 2040347 Opened 9 days ago Closed 7 days ago

Transactions could be dropped when HappyEyeballsConnectionAttempt::Abandon is called

Categories

(Core :: Networking: HTTP, defect, P2)

defect

Tracking

()

RESOLVED FIXED
153 Branch
Tracking Status
firefox153 --- fixed

People

(Reporter: kershaw, Assigned: kershaw)

References

(Blocks 1 open bug)

Details

(Whiteboard: [necko-triaged])

Attachments

(4 files)

When two concurrent requests each enter a Happy Eyeballs 0-RTT race, ZeroRttHandle::Do0RTT removes both real transactions from the connection manager’s pending queue via LockInRealTxnFromPendingQueue. If one race wins and calls MakeAllDontReuseExcept() → CloseAllConnectionAttempts(), the other HappyEyeballsConnectionAttempt’s Abandon() is triggered. At that point, the transaction is neither in the pending queue nor attached to any connection, and Abandon() neither closes nor re-queues it. As a result, the channel waits indefinitely and eventually times out with NS_BINDING_ABORTED.

Pushed by kjang@mozilla.com: https://github.com/mozilla-firefox/firefox/commit/635469e39b87 https://hg.mozilla.org/integration/autoland/rev/272735c31817 Replace ZeroRttHandle::mWinner raw pointer with RefPtr, r=mxinden https://github.com/mozilla-firefox/firefox/commit/88aa23cb6825 https://hg.mozilla.org/integration/autoland/rev/07a7081f123d Re-queue real transaction when 0-RTT HappyEyeballsConnectionAttempt is externally abandoned, r=necko-reviewers,jesup https://github.com/mozilla-firefox/firefox/commit/435389ed9653 https://hg.mozilla.org/integration/autoland/rev/6aa8326b08e6 Add test, r=necko-reviewers,jesup https://github.com/mozilla-firefox/firefox/commit/01181d6f0c5f https://hg.mozilla.org/integration/autoland/rev/5c4a6a558418 Add some debug assertions to check if we handle the transaction properly, r=necko-reviewers,jesup,mxinden
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: