diff --git a/CHANGES b/CHANGES index 282a5e5e3..acadc1adf 100644 --- a/CHANGES +++ b/CHANGES @@ -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 e687bab79..7b6469e7c 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 33e4e4687..add0fb986 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 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 its_payload