summaryrefslogtreecommitdiffstats
path: root/remoting/protocol/host_message_dispatcher.cc
diff options
context:
space:
mode:
Diffstat (limited to 'remoting/protocol/host_message_dispatcher.cc')
-rw-r--r--remoting/protocol/host_message_dispatcher.cc52
1 files changed, 34 insertions, 18 deletions
diff --git a/remoting/protocol/host_message_dispatcher.cc b/remoting/protocol/host_message_dispatcher.cc
index 1e1eea8..f4391a7 100644
--- a/remoting/protocol/host_message_dispatcher.cc
+++ b/remoting/protocol/host_message_dispatcher.cc
@@ -48,30 +48,46 @@ void HostMessageDispatcher::Initialize(
void HostMessageDispatcher::OnControlMessageReceived(
ControlMessage* message, Task* done_task) {
- // TODO(sergeyu): Add message validation.
- if (message->has_suggest_resolution()) {
- host_stub_->SuggestResolution(&message->suggest_resolution(), done_task);
- } else if (message->has_begin_session_request()) {
- host_stub_->BeginSessionRequest(
- &message->begin_session_request().credentials(), done_task);
+ if (!host_stub_->authenticated()) {
+ // When the client has not authenticated with the host, we restrict the
+ // control messages that we support.
+ if (message->has_begin_session_request()) {
+ host_stub_->BeginSessionRequest(
+ &message->begin_session_request().credentials(), 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_suggest_resolution()) {
+ host_stub_->SuggestResolution(&message->suggest_resolution(), done_task);
+ return;
+ } else if (message->has_begin_session_request()) {
+ LOG(WARNING) << "BeginSessionRequest sent after client already "
+ << "authorized.";
+ } else {
+ LOG(WARNING) << "Invalid control message received.";
+ }
}
+ done_task->Run();
+ delete done_task;
}
void HostMessageDispatcher::OnEventMessageReceived(
EventMessage* message, Task* done_task) {
- // TODO(sergeyu): Add message validation.
- if (message->has_key_event()) {
- input_stub_->InjectKeyEvent(&message->key_event(), done_task);
- } else if (message->has_mouse_event()) {
- input_stub_->InjectMouseEvent(&message->mouse_event(), done_task);
- } else {
- LOG(WARNING) << "Invalid event message received.";
- done_task->Run();
- delete done_task;
+ if (input_stub_->authenticated()) {
+ // TODO(sergeyu): Add message validation.
+ if (message->has_key_event()) {
+ input_stub_->InjectKeyEvent(&message->key_event(), done_task);
+ } else if (message->has_mouse_event()) {
+ input_stub_->InjectMouseEvent(&message->mouse_event(), done_task);
+ } else {
+ LOG(WARNING) << "Invalid event message received.";
+ done_task->Run();
+ delete done_task;
+ }
}
}