Closed Bug 1033461 Opened 10 years ago Closed 9 years ago

Consider closing phantom output stream under CacheEntry's lock before callbacks invocation.

Categories

(Core :: Networking: Cache, defect)

31 Branch
defect
Not set
normal

Tracking

()

RESOLVED DUPLICATE of bug 1154124

People

(Reporter: mayhemer, Unassigned)

References

(Blocks 1 open bug)

Details

(Whiteboard: [necko-backlog])

CacheEntry::OnHandleClosed closes the phantom output stream when it has not been taken (actually open) by the writer. But it happens a) after the next callback (consumer) in line has been invoked and b) outside the lock so that any other consumer could try opening the output stream before the phantom one has been closed (and more importantly - removed from the CacheFile.) That would lead to NS_ERROR_NOT_AVAILABLE being thrown and inability to cache the data. I don't see any chance for reentering the CacheEntry's code from CacheFile::OnOutputRemoved() - OnOutputClosed is redispatched - so it should be OK to close the output stream before callbacks and before leaving the lock.
Same for CacheEntry::SetValid()
Blocks: cache2polish
Whiteboard: [necko-backlog]
Status: NEW → RESOLVED
Closed: 9 years ago
Resolution: --- → DUPLICATE
You need to log in before you can comment on or make changes to this bug.