summaryrefslogtreecommitdiffstats
path: root/content
diff options
context:
space:
mode:
authorsergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-06 00:32:31 +0000
committersergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-06 00:32:31 +0000
commit2bfebfd44f06004e5a296b171e80afc017e0aa6e (patch)
treeb35ace29f499b787b01237597ef94a78cd4f5b34 /content
parent14edde9955b8b212760702ff7c22da232373942f (diff)
downloadchromium_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.cc3
-rw-r--r--content/renderer/p2p/socket_client.cc14
-rw-r--r--content/renderer/p2p/socket_client.h3
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);