Commit 2ccdef6d authored by piman@google.com's avatar piman@google.com

Don't re-enter when destroying FlashNetConnector

BUG=chromium-os:15439, chromium-os:15353
TEST=grooveshark with Pepper Flash

Review URL: http://codereview.chromium.org/7067014

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@86453 0039d316-1c4b-4281-b951-d872f2087c98
parent 5f6f83ed
......@@ -26,6 +26,19 @@ void StringToNetAddress(const std::string& str, PP_Flash_NetAddress* addr) {
memcpy(addr->data, str.data(), addr->size);
}
class AbortCallbackTask : public Task {
public:
AbortCallbackTask(PP_CompletionCallback callback)
: callback_(callback) {}
virtual void Run() {
PP_RunCompletionCallback(&callback_, PP_ERROR_ABORTED);
}
private:
PP_CompletionCallback callback_;
};
class FlashNetConnector : public PluginResource {
public:
FlashNetConnector(const HostResource& resource)
......@@ -35,8 +48,10 @@ class FlashNetConnector : public PluginResource {
remote_addr_out_(NULL) {
}
~FlashNetConnector() {
if (callback_.func)
PP_RunCompletionCallback(&callback_, PP_ERROR_ABORTED);
if (callback_.func) {
MessageLoop::current()->PostTask(FROM_HERE,
new AbortCallbackTask(callback_));
}
}
// Resource overrides.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment