diff options
author | garykac@chromium.org <garykac@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-04 21:31:44 +0000 |
---|---|---|
committer | garykac@chromium.org <garykac@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-04 21:31:44 +0000 |
commit | f0a9d1b2f35d1a0ae2c532b86fb3fd78b1c5465b (patch) | |
tree | cdbb2dde6847f6f36f8a0f8f6fe33d0192382b7a /remoting/protocol/client_message_dispatcher.cc | |
parent | 0e5eeb0f24d0874a2ff2e8f491d0d7fbd1921527 (diff) | |
download | chromium_src-f0a9d1b2f35d1a0ae2c532b86fb3fd78b1c5465b.zip chromium_src-f0a9d1b2f35d1a0ae2c532b86fb3fd78b1c5465b.tar.gz chromium_src-f0a9d1b2f35d1a0ae2c532b86fb3fd78b1c5465b.tar.bz2 |
Block event processing on host/client until the client has authenticated.
Input events:
* Client will not send them
* Host will not process them
Control events:
* Client will only process BeginSessionResponse
* Host will only process BeginSessionRequest
All other control messages will be ignored.
BUG=72466
TEST=manual+tests
Review URL: http://codereview.chromium.org/6594138
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@76974 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'remoting/protocol/client_message_dispatcher.cc')
-rw-r--r-- | remoting/protocol/client_message_dispatcher.cc | 34 |
1 files changed, 24 insertions, 10 deletions
diff --git a/remoting/protocol/client_message_dispatcher.cc b/remoting/protocol/client_message_dispatcher.cc index e7b6dd6..657e30d 100644 --- a/remoting/protocol/client_message_dispatcher.cc +++ b/remoting/protocol/client_message_dispatcher.cc @@ -39,18 +39,32 @@ void ClientMessageDispatcher::Initialize( void ClientMessageDispatcher::OnControlMessageReceived( ControlMessage* message, Task* done_task) { - // TODO(sergeyu): Add message validation. - if (message->has_notify_resolution()) { - client_stub_->NotifyResolution( - &message->notify_resolution(), done_task); - } else if (message->has_begin_session_response()) { - client_stub_->BeginSessionResponse( - &message->begin_session_response().login_status(), done_task); + if (!client_stub_->authenticated()) { + // When the client has not authenticated with the host, we restrict the + // control messages that we support. + if (message->has_begin_session_response()) { + client_stub_->BeginSessionResponse( + &message->begin_session_response().login_status(), done_task); + return; + } else { + LOG(WARNING) << "Invalid control message received " + << "(client not authenticated)."; + } } else { - LOG(WARNING) << "Invalid control message received."; - done_task->Run(); - delete done_task; + // TODO(sergeyu): Add message validation. + if (message->has_notify_resolution()) { + client_stub_->NotifyResolution( + &message->notify_resolution(), done_task); + return; + } else if (message->has_begin_session_response()) { + LOG(WARNING) << "BeginSessionResponse sent after client already " + << "authorized."; + } else { + LOG(WARNING) << "Invalid control message received."; + } } + done_task->Run(); + delete done_task; } } // namespace protocol |