diff --git a/buffet/notification/notification_channel.h b/buffet/notification/notification_channel.h
index ab33dd2..45267de 100644
--- a/buffet/notification/notification_channel.h
+++ b/buffet/notification/notification_channel.h
@@ -20,6 +20,7 @@
   virtual ~NotificationChannel() = default;
 
   virtual std::string GetName() const = 0;
+  virtual bool IsConnected() const = 0;
   virtual void AddChannelParameters(base::DictionaryValue* channel_json) = 0;
 
   virtual void Start(NotificationDelegate* delegate) = 0;
diff --git a/buffet/notification/pull_channel.cc b/buffet/notification/pull_channel.cc
index 78e352f..3172645 100644
--- a/buffet/notification/pull_channel.cc
+++ b/buffet/notification/pull_channel.cc
@@ -22,6 +22,8 @@
   return "pull";
 }
 
+bool PullChannel::IsConnected() const { return true; }
+
 void PullChannel::AddChannelParameters(base::DictionaryValue* channel_json) {
   // No extra parameters needed for "Pull" channel.
 }
diff --git a/buffet/notification/pull_channel.h b/buffet/notification/pull_channel.h
index fe89d40..d1b993c 100644
--- a/buffet/notification/pull_channel.h
+++ b/buffet/notification/pull_channel.h
@@ -25,6 +25,7 @@
 
   // Overrides from NotificationChannel.
   std::string GetName() const override;
+  bool IsConnected() const override;
   void AddChannelParameters(base::DictionaryValue* channel_json) override;
   void Start(NotificationDelegate* delegate) override;
   void Stop() override;
diff --git a/buffet/notification/xmpp_channel.cc b/buffet/notification/xmpp_channel.cc
index e2839c5..3ef7975 100644
--- a/buffet/notification/xmpp_channel.cc
+++ b/buffet/notification/xmpp_channel.cc
@@ -119,10 +119,18 @@
 }
 
 void XmppChannel::OnStreamEnd(const std::string& node_name) {
-  VLOG(2) << "XMPP stream ended: " << node_name << ". Restarting XMPP";
-  task_runner_->PostTask(FROM_HERE,
-                         base::Bind(&XmppChannel::Restart,
-                                    weak_ptr_factory_.GetWeakPtr()));
+  VLOG(2) << "XMPP stream ended: " << node_name;
+  if (IsConnected()) {
+    // If we had a fully-established connection, restart it now.
+    // However, if the connection has never been established yet (e.g.
+    // authorization failed), do not restart right now. Wait till we get
+    // new credentials.
+    task_runner_->PostTask(FROM_HERE,
+                           base::Bind(&XmppChannel::Restart,
+                                      weak_ptr_factory_.GetWeakPtr()));
+  } else if (delegate_) {
+    delegate_->OnPermanentFailure();
+  }
 }
 
 void XmppChannel::OnStanza(std::unique_ptr<XmlNode> stanza) {
@@ -174,8 +182,6 @@
       } else if (stanza->name() == "failure") {
         if (stanza->FindFirstChild("not-authorized", false)) {
           state_ = XmppState::kAuthenticationFailed;
-          if (delegate_)
-            delegate_->OnPermanentFailure();
           return;
         }
       }
@@ -365,6 +371,10 @@
   return "xmpp";
 }
 
+bool XmppChannel::IsConnected() const {
+  return state_ == XmppState::kSubscribed;
+}
+
 void XmppChannel::AddChannelParameters(base::DictionaryValue* channel_json) {
   // No extra parameters needed for XMPP.
 }
@@ -383,7 +393,7 @@
 }
 
 void XmppChannel::Stop() {
-  if (state_ == XmppState::kSubscribed && delegate_)
+  if (IsConnected() && delegate_)
     delegate_->OnDisconnected();
 
   weak_ptr_factory_.InvalidateWeakPtrs();
diff --git a/buffet/notification/xmpp_channel.h b/buffet/notification/xmpp_channel.h
index 73daee3..d83df48 100644
--- a/buffet/notification/xmpp_channel.h
+++ b/buffet/notification/xmpp_channel.h
@@ -35,6 +35,7 @@
 
   // Overrides from NotificationChannel.
   std::string GetName() const override;
+  bool IsConnected() const override;
   void AddChannelParameters(base::DictionaryValue* channel_json) override;
   void Start(NotificationDelegate* delegate) override;
   void Stop() override;
