diff options
author | sergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-06 00:32:31 +0000 |
---|---|---|
committer | sergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-06 00:32:31 +0000 |
commit | 2bfebfd44f06004e5a296b171e80afc017e0aa6e (patch) | |
tree | b35ace29f499b787b01237597ef94a78cd4f5b34 /content | |
parent | 14edde9955b8b212760702ff7c22da232373942f (diff) | |
download | chromium_src-2bfebfd44f06004e5a296b171e80afc017e0aa6e.zip chromium_src-2bfebfd44f06004e5a296b171e80afc017e0aa6e.tar.gz chromium_src-2bfebfd44f06004e5a296b171e80afc017e0aa6e.tar.bz2 |
Fix DCHECK in P2PSocketClient.
P2PSocketClient may DCHECK in Close() if Close() is called immediately after Init() because delegate_message_loop_ is initialized on the IPC thread. Initialize it in the constructor instead.
BUG=None
TEST=None
Review URL: http://codereview.chromium.org/7584011
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@95697 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
-rw-r--r-- | content/renderer/p2p/ipc_socket_factory.cc | 3 | ||||
-rw-r--r-- | content/renderer/p2p/socket_client.cc | 14 | ||||
-rw-r--r-- | content/renderer/p2p/socket_client.h | 3 |
3 files changed, 9 insertions, 11 deletions
diff --git a/content/renderer/p2p/ipc_socket_factory.cc b/content/renderer/p2p/ipc_socket_factory.cc index 5a6d058..c579433 100644 --- a/content/renderer/p2p/ipc_socket_factory.cc +++ b/content/renderer/p2p/ipc_socket_factory.cc @@ -124,8 +124,7 @@ bool IpcPacketSocket::Init(P2PSocketType type, P2PSocketClient* client, return false; } - client_->Init(type, local_endpoint, remote_endpoint, this, - base::MessageLoopProxy::CreateForCurrentThread()); + client_->Init(type, local_endpoint, remote_endpoint, this); return true; } diff --git a/content/renderer/p2p/socket_client.cc b/content/renderer/p2p/socket_client.cc index 55fcee5..7937d27 100644 --- a/content/renderer/p2p/socket_client.cc +++ b/content/renderer/p2p/socket_client.cc @@ -11,7 +11,7 @@ P2PSocketClient::P2PSocketClient(P2PSocketDispatcher* dispatcher) : dispatcher_(dispatcher), ipc_message_loop_(dispatcher->message_loop()), - delegate_message_loop_(NULL), + delegate_message_loop_(base::MessageLoopProxy::CreateForCurrentThread()), socket_id_(0), delegate_(NULL), state_(STATE_UNINITIALIZED) { } @@ -21,21 +21,21 @@ P2PSocketClient::~P2PSocketClient() { } void P2PSocketClient::Init( - P2PSocketType type, const net::IPEndPoint& local_address, - const net::IPEndPoint& remote_address, P2PSocketClient::Delegate* delegate, - scoped_refptr<base::MessageLoopProxy> delegate_loop) { + P2PSocketType type, + const net::IPEndPoint& local_address, + const net::IPEndPoint& remote_address, + P2PSocketClient::Delegate* delegate) { if (!ipc_message_loop_->BelongsToCurrentThread()) { ipc_message_loop_->PostTask( FROM_HERE, NewRunnableMethod( - this, &P2PSocketClient::Init, type, local_address, remote_address, - delegate, delegate_loop)); + this, &P2PSocketClient::Init, type, local_address, + remote_address, delegate)); return; } DCHECK_EQ(state_, STATE_UNINITIALIZED); state_ = STATE_OPENING; delegate_ = delegate; - delegate_message_loop_ = delegate_loop; socket_id_ = dispatcher_->RegisterClient(this); dispatcher_->SendP2PMessage(new P2PHostMsg_CreateSocket( 0, type, socket_id_, local_address, remote_address)); diff --git a/content/renderer/p2p/socket_client.h b/content/renderer/p2p/socket_client.h index fe3f691..325241d 100644 --- a/content/renderer/p2p/socket_client.h +++ b/content/renderer/p2p/socket_client.h @@ -46,8 +46,7 @@ class P2PSocketClient : public base::RefCountedThreadSafe<P2PSocketClient> { void Init(P2PSocketType type, const net::IPEndPoint& local_address, const net::IPEndPoint& remote_address, - Delegate* delegate, - scoped_refptr<base::MessageLoopProxy> delegate_loop); + Delegate* delegate); // Send the |data| to the |address|. void Send(const net::IPEndPoint& address, const std::vector<char>& data); |