diff options
author | Oleg Krotenko <okrotenko@luxoft.com> | 2015-10-09 18:15:43 +0300 |
---|---|---|
committer | Oleg Krotenko <okrotenko@luxoft.com> | 2015-10-12 12:20:37 +0300 |
commit | e86f3beb524eeea5e00e2671a166b90f00ac2260 (patch) | |
tree | a801860965a278ec3efe52d9bbf2fa0c8b6bf58b /src/components/application_manager/src/commands | |
parent | 654ea7edc1ed736939ecd929d37e51abc5370ec1 (diff) | |
download | sdl_core-e86f3beb524eeea5e00e2671a166b90f00ac2260.tar.gz |
Fix of SDL. Correction processing DialNumber request.
Problem: SDL freezes after receiving DialNumber request
Detail please see in APPLINK-17083
Diffstat (limited to 'src/components/application_manager/src/commands')
3 files changed, 29 insertions, 7 deletions
diff --git a/src/components/application_manager/src/commands/hmi/dial_number_request.cc b/src/components/application_manager/src/commands/hmi/dial_number_request.cc index 965f3a34f2..b0a30cca26 100644 --- a/src/components/application_manager/src/commands/hmi/dial_number_request.cc +++ b/src/components/application_manager/src/commands/hmi/dial_number_request.cc @@ -36,6 +36,8 @@ namespace application_manager { namespace commands { +namespace hmi { + DialNumberRequest::DialNumberRequest(const MessageSharedPtr& message) : RequestToHMI(message) { } @@ -47,6 +49,8 @@ void DialNumberRequest::Run() { SendRequest(); } +} // namespace hmi + } // namespace commands } // namespace application_manager diff --git a/src/components/application_manager/src/commands/hmi/dial_number_response.cc b/src/components/application_manager/src/commands/hmi/dial_number_response.cc index 60ffdd5ce6..22b61659bd 100644 --- a/src/components/application_manager/src/commands/hmi/dial_number_response.cc +++ b/src/components/application_manager/src/commands/hmi/dial_number_response.cc @@ -35,6 +35,8 @@ namespace application_manager { namespace commands { +namespace hmi { + DialNumberResponse::DialNumberResponse(const MessageSharedPtr& message) : ResponseFromHMI(message) { } @@ -48,6 +50,8 @@ void DialNumberResponse::Run() { event.raise(); } +} // namespace hmi + } // namespace commands } // namespace application_manager diff --git a/src/components/application_manager/src/commands/mobile/dial_number_request.cc b/src/components/application_manager/src/commands/mobile/dial_number_request.cc index 9e5e030b9b..ec33993391 100644 --- a/src/components/application_manager/src/commands/mobile/dial_number_request.cc +++ b/src/components/application_manager/src/commands/mobile/dial_number_request.cc @@ -48,6 +48,14 @@ DialNumberRequest::DialNumberRequest(const MessageSharedPtr& message) DialNumberRequest::~DialNumberRequest() { } +bool DialNumberRequest::Init(){ + LOG4CXX_AUTO_TRACE(logger_); + + default_timeout_ = 0; + + return true; +} + void DialNumberRequest::Run() { LOG4CXX_AUTO_TRACE(logger_); @@ -59,9 +67,18 @@ void DialNumberRequest::Run() { SendResponse(false, mobile_apis::Result::APPLICATION_NOT_REGISTERED); return; } - - StripNumberParam(); - + std::string number = (*message_)[strings::msg_params][strings::number].asString(); + if (!CheckSyntax(number)) { + LOG4CXX_ERROR(logger_, "Invalid incoming data"); + SendResponse(false, mobile_apis::Result::INVALID_DATA); + return; + } + StripNumberParam(number); + if (number.empty()) { + LOG4CXX_ERROR(logger_, "After strip number param is empty. Invalid incoming data"); + SendResponse(false, mobile_apis::Result::INVALID_DATA); + return; + } smart_objects::SmartObject msg_params = smart_objects::SmartObject( smart_objects::SmartType_Map); msg_params[strings::number] = @@ -101,15 +118,12 @@ void DialNumberRequest::on_event(const event_engine::Event& event) { SendResponse((mobile_apis::Result::SUCCESS == result_code), result_code); } -void DialNumberRequest::StripNumberParam() { - if ((*message_)[strings::msg_params].keyExists(strings::number)) { - std::string number = (*message_)[strings::msg_params][strings::number].asString(); +void DialNumberRequest::StripNumberParam(std::string &number) { std::size_t found = 0; while (std::string::npos != (found = number.find_first_not_of("+0123456789"))) { number.erase(number.begin() + found); } (*message_)[strings::msg_params][strings::number] = number; - } } } // namespace commands |