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) { ...@@ -26,6 +26,19 @@ void StringToNetAddress(const std::string& str, PP_Flash_NetAddress* addr) {
memcpy(addr->data, str.data(), addr->size); 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 { class FlashNetConnector : public PluginResource {
public: public:
FlashNetConnector(const HostResource& resource) FlashNetConnector(const HostResource& resource)
...@@ -35,8 +48,10 @@ class FlashNetConnector : public PluginResource { ...@@ -35,8 +48,10 @@ class FlashNetConnector : public PluginResource {
remote_addr_out_(NULL) { remote_addr_out_(NULL) {
} }
~FlashNetConnector() { ~FlashNetConnector() {
if (callback_.func) if (callback_.func) {
PP_RunCompletionCallback(&callback_, PP_ERROR_ABORTED); MessageLoop::current()->PostTask(FROM_HERE,
new AbortCallbackTask(callback_));
}
} }
// Resource overrides. // 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