| Index: chrome/browser/sync/notifier/cache_invalidation_packet_handler.cc
|
| diff --git a/chrome/browser/sync/notifier/cache_invalidation_packet_handler.cc b/chrome/browser/sync/notifier/cache_invalidation_packet_handler.cc
|
| index a5d23f2d68d0aa98f0fb0c3b878fa508dfa4f070..7edfc736d50fd1703d082aebdeb32b080c11330a 100644
|
| --- a/chrome/browser/sync/notifier/cache_invalidation_packet_handler.cc
|
| +++ b/chrome/browser/sync/notifier/cache_invalidation_packet_handler.cc
|
| @@ -202,6 +202,13 @@ CacheInvalidationPacketHandler::CacheInvalidationPacketHandler(
|
| sid_(MakeSid()) {
|
| CHECK(xmpp_client_);
|
| CHECK(invalidation_client_);
|
| + if (xmpp_client_->GetState() != buzz::XmppEngine::STATE_OPEN) {
|
| + LOG(DFATAL) << "non-open xmpp_client_ passed to "
|
| + << "CacheInvalidationPacketHandler";
|
| + return;
|
| + }
|
| + xmpp_client_->SignalStateChange.connect(
|
| + this, &CacheInvalidationPacketHandler::OnClientStateChange);
|
| invalidation::NetworkEndpoint* network_endpoint =
|
| invalidation_client_->network_endpoint();
|
| CHECK(network_endpoint);
|
| @@ -227,6 +234,10 @@ CacheInvalidationPacketHandler::~CacheInvalidationPacketHandler() {
|
| void CacheInvalidationPacketHandler::HandleOutboundPacket(
|
| invalidation::NetworkEndpoint* const& network_endpoint) {
|
| CHECK_EQ(network_endpoint, invalidation_client_->network_endpoint());
|
| + if (!xmpp_client_) {
|
| + LOG(DFATAL) << "HandleOutboundPacket() called with NULL xmpp_client_";
|
| + return;
|
| + }
|
| invalidation::string message;
|
| network_endpoint->TakeOutboundMessage(&message);
|
| std::string encoded_message;
|
| @@ -258,4 +269,21 @@ void CacheInvalidationPacketHandler::HandleInboundPacket(
|
| network_endpoint->HandleInboundMessage(decoded_message);
|
| }
|
|
|
| +void CacheInvalidationPacketHandler::OnClientStateChange(
|
| + buzz::XmppEngine::State state) {
|
| + switch (state) {
|
| + case buzz::XmppEngine::STATE_OPEN:
|
| + LOG(INFO) << "redundant STATE_OPEN message received";
|
| + break;
|
| + case buzz::XmppEngine::STATE_CLOSED:
|
| + LOG(INFO) << "xmpp_client_ closed -- setting to NULL";
|
| + xmpp_client_->SignalStateChange.disconnect(this);
|
| + xmpp_client_ = NULL;
|
| + break;
|
| + default:
|
| + LOG(INFO) << "xmpp_client_ state changed to " << state;
|
| + break;
|
| + }
|
| +}
|
| +
|
| } // namespace sync_notifier
|
|
|