summaryrefslogtreecommitdiff
path: root/src/components/application_manager/src/commands
diff options
context:
space:
mode:
authorOleg Krotenko <okrotenko@luxoft.com>2015-10-09 18:15:43 +0300
committerOleg Krotenko <okrotenko@luxoft.com>2015-10-12 12:20:37 +0300
commite86f3beb524eeea5e00e2671a166b90f00ac2260 (patch)
treea801860965a278ec3efe52d9bbf2fa0c8b6bf58b /src/components/application_manager/src/commands
parent654ea7edc1ed736939ecd929d37e51abc5370ec1 (diff)
downloadsdl_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')
-rw-r--r--src/components/application_manager/src/commands/hmi/dial_number_request.cc4
-rw-r--r--src/components/application_manager/src/commands/hmi/dial_number_response.cc4
-rw-r--r--src/components/application_manager/src/commands/mobile/dial_number_request.cc28
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