Skip to content

Commit

Permalink
Merge branch 'COVESA:master' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
maosltr committed Nov 10, 2023
2 parents 1c3e022 + bc87c0a commit 1733f80
Show file tree
Hide file tree
Showing 4 changed files with 82 additions and 39 deletions.
84 changes: 53 additions & 31 deletions implementation/routing/src/routing_manager_impl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4119,28 +4119,39 @@ routing_manager_impl::get_requesters_unlocked(
std::set<client_t> its_requesters;

auto found_service = requested_services_.find(_service);
if (found_service != requested_services_.end()) {
auto found_instance = found_service->second.find(_instance);
if (found_instance != found_service->second.end()) {
for (const auto& its_major : found_instance->second) {
if (its_major.first == _major || _major == DEFAULT_MAJOR
|| its_major.first == ANY_MAJOR) {
for (const auto &its_minor : its_major.second) {
if (its_minor.first <= _minor
|| _minor == DEFAULT_MINOR
|| its_minor.first == ANY_MINOR) {
if (its_requesters.empty()) {
its_requesters = its_minor.second;
} else {
its_requesters.insert(its_minor.second.cbegin(),
its_minor.second.cend());
}
}
if (found_service == requested_services_.end()) {
found_service = requested_services_.find(ANY_SERVICE);
if (found_service == requested_services_.end()) {
return its_requesters;
}
}

auto found_instance = found_service->second.find(_instance);
if (found_instance == found_service->second.end()) {
found_instance = found_service->second.find(ANY_INSTANCE);
if (found_instance == found_service->second.end()) {
return its_requesters;
}
}

for (const auto& its_major : found_instance->second) {
if (its_major.first == _major || _major == DEFAULT_MAJOR
|| its_major.first == ANY_MAJOR) {
for (const auto &its_minor : its_major.second) {
if (its_minor.first <= _minor
|| _minor == DEFAULT_MINOR
|| its_minor.first == ANY_MINOR) {
if (its_requesters.empty()) {
its_requesters = its_minor.second;
} else {
its_requesters.insert(its_minor.second.cbegin(),
its_minor.second.cend());
}
}
}
}
}

return its_requesters;
}

Expand All @@ -4150,24 +4161,35 @@ routing_manager_impl::has_requester_unlocked(
major_version_t _major, minor_version_t _minor) {

auto found_service = requested_services_.find(_service);
if (found_service != requested_services_.end()) {
auto found_instance = found_service->second.find(_instance);
if (found_instance != found_service->second.end()) {
for (const auto& its_major : found_instance->second) {
if (its_major.first == _major || _major == DEFAULT_MAJOR
|| its_major.first == ANY_MAJOR) {
for (const auto &its_minor : its_major.second) {
if (its_minor.first <= _minor
|| _minor == DEFAULT_MINOR
|| its_minor.first == ANY_MINOR) {

return true;
}
}
if (found_service == requested_services_.end()) {
found_service = requested_services_.find(ANY_SERVICE);
if (found_service == requested_services_.end()) {
return false;
}
}

auto found_instance = found_service->second.find(_instance);
if (found_instance == found_service->second.end()) {
found_instance = found_service->second.find(ANY_INSTANCE);
if (found_instance == found_service->second.end()) {
return false;
}
}

for (const auto& its_major : found_instance->second) {
if (its_major.first == _major || _major == DEFAULT_MAJOR
|| its_major.first == ANY_MAJOR) {
for (const auto &its_minor : its_major.second) {
if (its_minor.first <= _minor
|| _minor == DEFAULT_MINOR
|| its_minor.first == ANY_MINOR) {

return true;
}
}
}
}

return false;
}

Expand Down
3 changes: 2 additions & 1 deletion implementation/security/include/policy_manager_impl.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -154,10 +154,11 @@ class VSOMEIP_IMPORT_EXPORT policy_manager_impl
mutable boost::shared_mutex policy_extension_paths_mutex_;
//map[hostname, pair[path, map[complete path with UID/GID, control loading]]
std::map<std::string, std::pair<std::string, std::map<std::string, bool>>> policy_extension_paths_;

bool check_routing_credentials_;
#endif // !VSOMEIP_DISABLE_SECURITY

bool is_configured_;
bool check_routing_credentials_;

mutable std::mutex routing_credentials_mutex_;
std::pair<uint32_t, uint32_t> routing_credentials_;
Expand Down
4 changes: 2 additions & 2 deletions implementation/security/src/policy_manager_impl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,9 @@ policy_manager_impl::policy_manager_impl()
allow_remote_clients_(true),
check_whitelist_(false),
policy_base_path_(""),
check_routing_credentials_(false),
#endif // !VSOMEIP_DISABLE_SECURITY
is_configured_(false),
check_routing_credentials_(false)
is_configured_(false)
{
}

Expand Down
30 changes: 25 additions & 5 deletions implementation/service_discovery/src/service_discovery_impl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -114,11 +114,31 @@ service_discovery_impl::init() {
initial_delay_max = tmp;
}

std::random_device r;
std::mt19937 e(r());
std::uniform_int_distribution<std::uint32_t> distribution(
initial_delay_min, initial_delay_max);
initial_delay_ = std::chrono::milliseconds(distribution(e));
try {
std::random_device r;
std::mt19937 e(r());
std::uniform_int_distribution<std::uint32_t> distribution(
initial_delay_min, initial_delay_max);
initial_delay_ = std::chrono::milliseconds(distribution(e));
} catch (const std::exception& e) {
VSOMEIP_ERROR << "Failed to generate random initial delay: " << e.what();

// Fallback to the Mersenne Twister engine
const auto seed = static_cast<std::mt19937::result_type>(
std::chrono::duration_cast<std::chrono::milliseconds>(
std::chrono::high_resolution_clock::now().time_since_epoch())
.count());

std::mt19937 mtwister{seed};

// Interpolate between initial_delay bounds
initial_delay_ = std::chrono::milliseconds(
initial_delay_min +
(static_cast<std::int64_t>(mtwister()) *
static_cast<std::int64_t>(initial_delay_max - initial_delay_min) /
static_cast<std::int64_t>(std::mt19937::max() -
std::mt19937::min())));
}


repetitions_base_delay_ = std::chrono::milliseconds(
Expand Down

0 comments on commit 1733f80

Please sign in to comment.