diff options
author | Juergen Gehring <juergen.gehring@bmw.de> | 2018-05-22 02:56:43 -0700 |
---|---|---|
committer | Juergen Gehring <juergen.gehring@bmw.de> | 2018-05-22 02:56:43 -0700 |
commit | a2b23e379fe383103cdf38cab7547a1e7451b9e2 (patch) | |
tree | b7026847e02bf764c21b44d572a5bcee13fc9c96 | |
parent | 3fe1afd0de1fd7c167d89ca75702e4627357ef5e (diff) | |
download | vSomeIP-a2b23e379fe383103cdf38cab7547a1e7451b9e2.tar.gz |
vsomeip 2.10.152.10.15
-rw-r--r-- | CHANGES | 3 | ||||
-rw-r--r-- | CMakeLists.txt | 2 | ||||
-rw-r--r-- | implementation/routing/src/routing_manager_impl.cpp | 19 |
3 files changed, 22 insertions, 2 deletions
@@ -1,5 +1,8 @@ Changes ======= +v2.10.15 +- Fix remote event caching + v2.10.14 - Bugfix for pending subscriptions when same port is used for TCP and UDP endpoint option. diff --git a/CMakeLists.txt b/CMakeLists.txt index e687bab..7b6469e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,7 +8,7 @@ project (vsomeip) set (VSOMEIP_MAJOR_VERSION 2) set (VSOMEIP_MINOR_VERSION 10) -set (VSOMEIP_PATCH_VERSION 14) +set (VSOMEIP_PATCH_VERSION 15) set (VSOMEIP_VERSION ${VSOMEIP_MAJOR_VERSION}.${VSOMEIP_MINOR_VERSION}.${VSOMEIP_PATCH_VERSION}) set (PACKAGE_VERSION ${VSOMEIP_VERSION}) # Used in documentatin/doxygen.in set (CMAKE_VERBOSE_MAKEFILE off) diff --git a/implementation/routing/src/routing_manager_impl.cpp b/implementation/routing/src/routing_manager_impl.cpp index 33e4e46..add0fb9 100644 --- a/implementation/routing/src/routing_manager_impl.cpp +++ b/implementation/routing/src/routing_manager_impl.cpp @@ -1575,7 +1575,24 @@ bool routing_manager_impl::deliver_notification( if (its_event) { if (!its_event->is_provided()) { if (its_event->get_subscribers().size() == 0) { - return true; // as there is nothing to do + // no subscribers for this specific event / check subscriptions + // to other events of the event's eventgroups + bool cache_event = false; + for (const auto eg : its_event->get_eventgroups()) { + std::shared_ptr<eventgroupinfo> egi = find_eventgroup(_service, _instance, eg); + for (const auto &e : egi->get_events()) { + cache_event = (e->get_subscribers().size() > 0); + if (cache_event) { + break; + } + } + if (cache_event) { + break; + } + } + if (!cache_event) { + return true; // as there is nothing to do + } } const uint32_t its_length(utility::get_payload_size(_data, _length)); std::shared_ptr<payload> its_payload |