Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(181)

Unified Diff: remoting/signaling/delegating_signal_strategy.cc

Issue 2747743004: Fix crash when user disconnects It2Me host (Closed)
Patch Set: Fix Client breakage Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « remoting/signaling/delegating_signal_strategy.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/signaling/delegating_signal_strategy.cc
diff --git a/remoting/signaling/delegating_signal_strategy.cc b/remoting/signaling/delegating_signal_strategy.cc
index 83f23907acad2c6ab1829693b6ea91a6dc907841..0f6dc7d7827969e781503e966443535c9a65162c 100644
--- a/remoting/signaling/delegating_signal_strategy.cc
+++ b/remoting/signaling/delegating_signal_strategy.cc
@@ -16,23 +16,41 @@ namespace remoting {
DelegatingSignalStrategy::DelegatingSignalStrategy(
std::string local_jid,
scoped_refptr<base::SingleThreadTaskRunner> client_task_runner,
- const SendIqCallback& send_iq_callback)
+ const IqCallback& send_iq_callback)
: local_jid_(local_jid),
delegate_task_runner_(base::ThreadTaskRunnerHandle::Get()),
client_task_runner_(client_task_runner),
send_iq_callback_(send_iq_callback),
- weak_factory_(this) {}
+ weak_factory_(this) {
+ incoming_iq_callback_ =
+ base::BindRepeating(&OnIncomingMessageFromDelegate,
+ weak_factory_.GetWeakPtr(), client_task_runner_);
+}
DelegatingSignalStrategy::~DelegatingSignalStrategy() {}
-void DelegatingSignalStrategy::OnIncomingMessage(const std::string& message) {
- if (!client_task_runner_->BelongsToCurrentThread()) {
- client_task_runner_->PostTask(
- FROM_HERE, base::Bind(&DelegatingSignalStrategy::OnIncomingMessage,
- weak_factory_.GetWeakPtr(), message));
+DelegatingSignalStrategy::IqCallback
+DelegatingSignalStrategy::GetIncomingMessageCallback() {
+ return incoming_iq_callback_;
+}
+
+// static
+void DelegatingSignalStrategy::OnIncomingMessageFromDelegate(
+ base::WeakPtr<DelegatingSignalStrategy> weak_ptr,
+ scoped_refptr<base::SingleThreadTaskRunner> client_task_runner,
+ const std::string& message) {
+ if (client_task_runner->BelongsToCurrentThread()) {
+ weak_ptr->OnIncomingMessage(message);
return;
}
+ client_task_runner->PostTask(
+ FROM_HERE, base::Bind(&DelegatingSignalStrategy::OnIncomingMessage,
+ weak_ptr, message));
+}
+
+void DelegatingSignalStrategy::OnIncomingMessage(const std::string& message) {
+ DCHECK(client_task_runner_->BelongsToCurrentThread());
std::unique_ptr<buzz::XmlElement> stanza(buzz::XmlElement::ForStr(message));
if (!stanza.get()) {
LOG(WARNING) << "Malformed XMPP stanza received: " << message;
« no previous file with comments | « remoting/signaling/delegating_signal_strategy.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698