Bug 701383: Websocket fails to delete mOutGoingMessage if closed multiple times. r=mcmanus

This commit is contained in:
Jason Duell
2012-01-31 20:41:47 -08:00
parent 9ddf1af9e1
commit 50f9fd9d6d
2 changed files with 11 additions and 3 deletions

View File

@@ -1347,6 +1347,7 @@ WebSocketChannel::PrimeNewOutgoingMessage()
if (msgType == kMsgTypeFin) {
// This is a demand to create a close message
if (mClientClosed) {
DeleteCurrentOutGoingMessage();
PrimeNewOutgoingMessage();
return;
}
@@ -1515,6 +1516,14 @@ WebSocketChannel::PrimeNewOutgoingMessage()
// compression process,
}
void
WebSocketChannel::DeleteCurrentOutGoingMessage()
{
delete mCurrentOut;
mCurrentOut = nsnull;
mCurrentOutSent = 0;
}
void
WebSocketChannel::EnsureHdrOut(PRUint32 size)
{
@@ -2728,9 +2737,7 @@ WebSocketChannel::OnOutputStreamReady(nsIAsyncOutputStream *aStream)
NS_DispatchToMainThread(new CallAcknowledge(this,
mCurrentOut->Length()));
}
delete mCurrentOut;
mCurrentOut = nsnull;
mCurrentOutSent = 0;
DeleteCurrentOutGoingMessage();
PrimeNewOutgoingMessage();
} else {
mCurrentOutSent += amtSent;