summaryrefslogtreecommitdiffstats
path: root/remoting/jingle_glue/xmpp_signal_strategy.cc
diff options
context:
space:
mode:
authordharani@chromium.org <dharani@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-22 03:16:02 +0000
committerdharani@chromium.org <dharani@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-22 03:16:02 +0000
commit14e66abe9c27f1e728a749950a78f837ac538c73 (patch)
tree350f3c5896ecd8512c5ca6753eae92b107eea31c /remoting/jingle_glue/xmpp_signal_strategy.cc
parentc6fd597a6bfb6500312aacb473417abaf7baa831 (diff)
downloadchromium_src-14e66abe9c27f1e728a749950a78f837ac538c73.zip
chromium_src-14e66abe9c27f1e728a749950a78f837ac538c73.tar.gz
chromium_src-14e66abe9c27f1e728a749950a78f837ac538c73.tar.bz2
This broke M20 build.
Revert 137824 - Properly handle accounts that don't have GMail account. 1. Me2MeHostAuthenticatorFactory now verifies that the bare JID of the remote client matches bare JID of the host. Previously it was comparing it with the user's email, which may be different from JID. 2. GaiaOAuthClient now fetches user's email. 3. SignalingConnector verifies that user's email matches the expected value stored in xmpp_login. If it doesn't, then the auth token was generated for a different account and the host treats it as an authentication error. BUG=128102 Review URL: https://chromiumcodereview.appspot.com/10332187 TBR=sergeyu@chromium.org Review URL: https://chromiumcodereview.appspot.com/10388226 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@138204 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'remoting/jingle_glue/xmpp_signal_strategy.cc')
-rw-r--r--remoting/jingle_glue/xmpp_signal_strategy.cc18
1 files changed, 18 insertions, 0 deletions
diff --git a/remoting/jingle_glue/xmpp_signal_strategy.cc b/remoting/jingle_glue/xmpp_signal_strategy.cc
index 5cac0fc..6ae4f1a 100644
--- a/remoting/jingle_glue/xmpp_signal_strategy.cc
+++ b/remoting/jingle_glue/xmpp_signal_strategy.cc
@@ -167,6 +167,24 @@ void XmppSignalStrategy::OnConnectionStateChanged(
DCHECK(CalledOnValidThread());
if (state == buzz::XmppEngine::STATE_OPEN) {
+ // Verify that the JID that we've received matches the username
+ // that we have. If it doesn't, then the OAuth token was probably
+ // issued for a different account, so we treat is a an auth error.
+ //
+ // TODO(sergeyu): Some user accounts may not have associated
+ // e-mail address. The check below will fail for such
+ // accounts. Make sure we can handle this case proprely.
+ if (!StartsWithASCII(GetLocalJid(), username_, false)) {
+ LOG(ERROR) << "Received JID that is different from the expected value.";
+ error_ = AUTHENTICATION_FAILED;
+ xmpp_client_->SignalStateChange.disconnect(this);
+ MessageLoop::current()->PostTask(
+ FROM_HERE, base::Bind(&DisconnectXmppClient, xmpp_client_));
+ xmpp_client_ = NULL;
+ SetState(DISCONNECTED);
+ return;
+ }
+
keep_alive_timer_.Start(
FROM_HERE, base::TimeDelta::FromSeconds(kKeepAliveIntervalSeconds),
this, &XmppSignalStrategy::SendKeepAlive);