diff options
Diffstat (limited to 'remoting/protocol/host_message_dispatcher.cc')
-rw-r--r-- | remoting/protocol/host_message_dispatcher.cc | 52 |
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; + } } } |