mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-10 03:45:46 +00:00
Bug 1182515 - WebSocketChannel leaked when WebSocketChannel::AsyncOpen fails, r=mcmanus
This commit is contained in:
parent
baa38d5d62
commit
eac1f62ecb
@ -3265,6 +3265,26 @@ WebSocketChannel::AsyncOpen(nsIURI *aURI,
|
||||
// nsIChannelEventSink in this object in order to deal with redirects
|
||||
localChannel->SetNotificationCallbacks(this);
|
||||
|
||||
class MOZ_STACK_CLASS CleanUpOnFailure
|
||||
{
|
||||
public:
|
||||
explicit CleanUpOnFailure(WebSocketChannel* aWebSocketChannel)
|
||||
: mWebSocketChannel(aWebSocketChannel)
|
||||
{}
|
||||
|
||||
~CleanUpOnFailure()
|
||||
{
|
||||
if (!mWebSocketChannel->mWasOpened) {
|
||||
mWebSocketChannel->mChannel = nullptr;
|
||||
mWebSocketChannel->mHttpChannel = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
WebSocketChannel *mWebSocketChannel;
|
||||
};
|
||||
|
||||
CleanUpOnFailure cuof(this);
|
||||
|
||||
mChannel = do_QueryInterface(localChannel, &rv);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user