summaryrefslogtreecommitdiffstats
path: root/remoting/protocol/client_message_dispatcher.cc
diff options
context:
space:
mode:
authorgarykac@chromium.org <garykac@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-04 21:31:44 +0000
committergarykac@chromium.org <garykac@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-04 21:31:44 +0000
commitf0a9d1b2f35d1a0ae2c532b86fb3fd78b1c5465b (patch)
treecdbb2dde6847f6f36f8a0f8f6fe33d0192382b7a /remoting/protocol/client_message_dispatcher.cc
parent0e5eeb0f24d0874a2ff2e8f491d0d7fbd1921527 (diff)
downloadchromium_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.cc34
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