Index: remoting/protocol/jingle_session.cc |
diff --git a/remoting/protocol/jingle_session.cc b/remoting/protocol/jingle_session.cc |
index bfab845debed86b9f7b98c032acd653953f14679..a4c1ab4250d642e9996ed06580f95bb4333711fd 100644 |
--- a/remoting/protocol/jingle_session.cc |
+++ b/remoting/protocol/jingle_session.cc |
@@ -550,6 +550,7 @@ bool JingleSession::InitializeConfigFromDescription( |
} |
void JingleSession::ProcessAuthenticationStep() { |
+ DCHECK(CalledOnValidThread()); |
DCHECK_EQ(state_, CONNECTED); |
if (authenticator_->state() == Authenticator::MESSAGE_READY) { |
@@ -565,6 +566,11 @@ void JingleSession::ProcessAuthenticationStep() { |
} else if (authenticator_->state() == Authenticator::REJECTED) { |
CloseInternal(AuthRejectionReasonToErrorCode( |
authenticator_->rejection_reason())); |
+ } else if (authenticator_->state() == Authenticator::WAITING_EXTERNAL) { |
+ authenticator_->PerformExternalAction(base::Bind( |
+ &JingleSession::ProcessAuthenticationStep, |
+ // Authenticator is owned by JingleSession, and cannot outlive it. |
+ base::Unretained(this))); |
} |
} |