Index: remoting/signaling/xmpp_signal_strategy.cc |
diff --git a/remoting/signaling/xmpp_signal_strategy.cc b/remoting/signaling/xmpp_signal_strategy.cc |
index 51eae4bc62c75ac11de54e5c55b3309ec8d11867..5edbb377f5b69a30ac947e436623f1971152dad8 100644 |
--- a/remoting/signaling/xmpp_signal_strategy.cc |
+++ b/remoting/signaling/xmpp_signal_strategy.cc |
@@ -191,6 +191,7 @@ void XmppSignalStrategy::Core::Disconnect() { |
writer_.reset(); |
socket_.reset(); |
tls_state_ = TlsState::NOT_REQUESTED; |
+ read_pending_ = false; |
FOR_EACH_OBSERVER(Listener, listeners_, |
OnSignalStrategyStateChange(DISCONNECTED)); |
@@ -234,13 +235,15 @@ bool XmppSignalStrategy::Core::SendStanza(scoped_ptr<buzz::XmlElement> stanza) { |
DCHECK(thread_checker_.CalledOnValidThread()); |
if (!stream_parser_) { |
- VLOG(0) << "Dropping signalling message because XMPP " |
- "connection has been terminated."; |
+ VLOG(0) << "Dropping signalling message because XMPP is not connected."; |
return false; |
} |
SendMessage(stanza->Str()); |
- return true; |
+ |
+ // Return false if the SendMessage() call above resulted in the SignalStrategy |
+ // being disconnected. |
+ return stream_parser_ != nullptr; |
} |
void XmppSignalStrategy::Core::SetAuthInfo(const std::string& username, |