Closed Bug 988421 Opened 7 years ago Closed 7 years ago

spdy pushed stream concurrency counting problem

Categories

(Core :: Networking: HTTP, defect)

29 Branch
x86_64
Linux
defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla31

People

(Reporter: mcmanus, Assigned: mcmanus)

Details

(Whiteboard: [spdy])

Attachments

(1 file)

a spdy stream pushes up mConcurrent when it is activated, but before it actually gets a stream id. that's intentional - we don't want to start buffering from more requests than we can actually send out immediately and the id cannot be assigned until the syn-stream is sent because they must be monotonically increasing.

however a pulled stream that gets hooked up with a pushed cache hit never gets assigned a real stream id (because it never sends a syn-stream, it just uses the data from the pushed stream).

This lead to a leak in the mConcurrent semaphore. The fix is just to release the mConcurrent count when a push hit is made.

HTTP-2 is better here, in that all streams get cleaned up and we explicitly track whether or not they are counted against mConcurrent.. so there isn't a leak. However I added the release code to HTTP-2 as well because it allows the concurrency slot to be utilized for another pull stream earlier rather than waiting for the cleanup.
Attachment #8397200 - Flags: review?(hurley)
Assignee: nobody → mcmanus
Status: NEW → ASSIGNED
Attachment #8397200 - Flags: review?(hurley) → review+
https://hg.mozilla.org/mozilla-central/rev/e04599ab2ee3
Status: ASSIGNED → RESOLVED
Closed: 7 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla31
You need to log in before you can comment on or make changes to this bug.