Skip to content

Commit

Permalink
vsomeip 2.14.16
Browse files Browse the repository at this point in the history
  • Loading branch information
lutzbichler committed Jul 22, 2019
1 parent 9fb9bee commit ee44d19
Show file tree
Hide file tree
Showing 153 changed files with 15,419 additions and 1,979 deletions.
112 changes: 112 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
/CMakeFiles
/build*/*
/examples/hello_world/build
/.settings
/doc
/daemon/CMakeFiles
/examples/CMakeFiles
/implementation/configuration/include/internal.hpp
/test/application_tests/application_test.json
/test/application_tests/application_test_daemon.json
/test/application_tests/application_test_no_dispatch_threads.json
/test/application_tests/application_test_no_dispatch_threads_daemon.json
/test/big_payload_tests/big_payload_test_tcp_client.json
/test/big_payload_tests/big_payload_test_tcp_service.json
/test/big_payload_tests/big_payload_test_tcp_client_random.json
/test/big_payload_tests/big_payload_test_tcp_service_random.json
/test/big_payload_tests/big_payload_test_tcp_client_limited_general.json
/test/big_payload_tests/big_payload_test_tcp_service_limited_general.json
/test/big_payload_tests/big_payload_test_tcp_client_queue_limited_general.json
/test/big_payload_tests/big_payload_test_tcp_client_queue_limited_specific.json
/test/big_payload_tests/big_payload_test_tcp_service_queue_limited_general.json
/test/big_payload_tests/big_payload_test_tcp_service_queue_limited_specific.json
/test/magic_cookies_tests/magic_cookies_test_client.json
/test/magic_cookies_tests/magic_cookies_test_service.json
/test/payload_tests/external_local_payload_test_client_external.json
/test/payload_tests/external_local_payload_test_client_local.json
/test/payload_tests/external_local_payload_test_service.json
/test/routing_tests/external_local_routing_test_client_external.json
/test/routing_tests/external_local_routing_test_service.json
/test/routing_tests/local_routing_test_starter.sh
/test/client_id_tests/client_id_test_diff_client_ids_diff_ports_master.json
/test/client_id_tests/client_id_test_diff_client_ids_diff_ports_slave.json
/test/client_id_tests/client_id_test_diff_client_ids_same_ports_master.json
/test/client_id_tests/client_id_test_diff_client_ids_same_ports_slave.json
/test/client_id_tests/client_id_test_diff_client_ids_partial_same_ports_master.json
/test/client_id_tests/client_id_test_diff_client_ids_partial_same_ports_slave.json
/test/client_id_tests/client_id_test_same_client_ids_diff_ports_master.json
/test/client_id_tests/client_id_test_same_client_ids_diff_ports_slave.json
/test/client_id_tests/client_id_test_same_client_ids_same_ports_master.json
/test/client_id_tests/client_id_test_same_client_ids_same_ports_slave.json
/test/subscribe_notify_tests/subscribe_notify_test_diff_client_ids_diff_ports_master.json
/test/subscribe_notify_tests/subscribe_notify_test_diff_client_ids_diff_ports_slave.json
/test/subscribe_notify_tests/subscribe_notify_test_diff_client_ids_same_ports_master.json
/test/subscribe_notify_tests/subscribe_notify_test_diff_client_ids_same_ports_slave.json
/test/subscribe_notify_tests/subscribe_notify_test_diff_client_ids_partial_same_ports_master.json
/test/subscribe_notify_tests/subscribe_notify_test_diff_client_ids_partial_same_ports_slave.json
/test/subscribe_notify_tests/subscribe_notify_test_same_client_ids_diff_ports_master.json
/test/subscribe_notify_tests/subscribe_notify_test_same_client_ids_diff_ports_slave.json
/test/subscribe_notify_tests/subscribe_notify_test_same_client_ids_same_ports_master.json
/test/subscribe_notify_tests/subscribe_notify_test_same_client_ids_same_ports_slave.json
/test/subscribe_notify_tests/subscribe_notify_test_one_event_two_eventgroups_master.json
/test/subscribe_notify_tests/subscribe_notify_test_one_event_two_eventgroups_udp_slave.json
/test/subscribe_notify_tests/subscribe_notify_test_one_event_two_eventgroups_tcp_slave.json
/test/subscribe_notify_one_tests/subscribe_notify_one_test_diff_client_ids_diff_ports_master.json
/test/subscribe_notify_one_tests/subscribe_notify_one_test_diff_client_ids_diff_ports_slave.json
/test/subscribe_notify_one_tests/subscribe_notify_one_test_diff_client_ids_diff_ports_master_tcp.json
/test/subscribe_notify_one_tests/subscribe_notify_one_test_diff_client_ids_diff_ports_slave_tcp.json
/test/subscribe_notify_one_tests/subscribe_notify_one_test_diff_client_ids_diff_ports_master_udp.json
/test/subscribe_notify_one_tests/subscribe_notify_one_test_diff_client_ids_diff_ports_slave_udp.json
/test/subscribe_notify_tests/subscribe_notify_test_diff_client_ids_diff_ports_same_service_id_master.json
/test/subscribe_notify_tests/subscribe_notify_test_diff_client_ids_diff_ports_same_service_id_slave.json
/test/subscribe_notify_tests/subscribe_notify_test_diff_client_ids_diff_ports_master_tcp.json
/test/subscribe_notify_tests/subscribe_notify_test_diff_client_ids_diff_ports_slave_tcp.json
/test/subscribe_notify_tests/subscribe_notify_test_diff_client_ids_same_ports_master_tcp.json
/test/subscribe_notify_tests/subscribe_notify_test_diff_client_ids_same_ports_slave_tcp.json
/test/cpu_load_tests/cpu_load_test_client_slave.json
/test/cpu_load_tests/cpu_load_test_client_master.json
/test/cpu_load_tests/cpu_load_test_service_slave.json
/test/cpu_load_tests/cpu_load_test_service_master.json
/tools/CMakeFiles
/test/initial_event_tests/initial_event_test_diff_client_ids_diff_ports_master.json
/test/initial_event_tests/initial_event_test_diff_client_ids_diff_ports_same_service_id_master.json
/test/initial_event_tests/initial_event_test_diff_client_ids_diff_ports_same_service_id_slave.json
/test/initial_event_tests/initial_event_test_diff_client_ids_diff_ports_slave.json
/test/initial_event_tests/initial_event_test_diff_client_ids_partial_same_ports_master.json
/test/initial_event_tests/initial_event_test_diff_client_ids_partial_same_ports_slave.json
/test/initial_event_tests/initial_event_test_diff_client_ids_same_ports_master.json
/test/initial_event_tests/initial_event_test_diff_client_ids_same_ports_slave.json
/test/initial_event_tests/initial_event_test_same_client_ids_diff_ports_master.json
/test/initial_event_tests/initial_event_test_same_client_ids_diff_ports_slave.json
/test/initial_event_tests/initial_event_test_same_client_ids_same_ports_master.json
/test/initial_event_tests/initial_event_test_same_client_ids_same_ports_slave.json
/test/initial_event_tests/initial_event_test_diff_client_ids_diff_ports_master_tcp.json
/test/initial_event_tests/initial_event_test_diff_client_ids_diff_ports_slave_tcp.json
/test/initial_event_tests/initial_event_test_diff_client_ids_same_ports_master_tcp.json
/test/initial_event_tests/initial_event_test_diff_client_ids_same_ports_slave_tcp.json
/test/offer_tests/offer_test_external_master.json
/test/offer_tests/offer_test_external_slave.json
/test/offer_tests/offer_test_external_master_starter.sh
/test/offer_tests/offer_test_big_sd_msg_master_starter.sh
/test/offer_tests/offer_test_big_sd_msg_master.json
/test/offer_tests/offer_test_big_sd_msg_slave.json
/test/subscribe_notify_tests/subscribe_notify_test_diff_client_ids_diff_ports_autoconfig_master.json
/test/subscribe_notify_tests/subscribe_notify_test_diff_client_ids_diff_ports_autoconfig_slave.json
test/security_tests/security_test_config_client_external_allow.json
test/security_tests/security_test_config_client_external_deny.json
test/security_tests/security_test_config_service_external_allow.json
test/security_tests/security_test_config_service_external_deny.json
test/security_tests/security_test_local_config.json
/test/pending_subscription_tests/pending_subscription_test_master.json
/test/pending_subscription_tests/pending_subscription_test_master_starter.sh
/test/malicious_data_tests/malicious_data_test_master.json
/test/malicious_data_tests/malicious_data_test_master_starter.sh
/test/debug_diag_job_plugin_tests/debug_diag_job_plugin_test_master.json
/test/debug_diag_job_plugin_tests/debug_diag_job_plugin_test_slave.json
/test/security_config_plugin_tests/security_config_plugin_test_local.json
/test/e2e_tests/e2e_test_client_external.json
/test/e2e_tests/e2e_test_service_external.json
/test/event_tests/event_test_master.json
/test/event_tests/event_test_slave_tcp.json
/test/event_tests/event_test_slave_udp.json

143 changes: 139 additions & 4 deletions CHANGES
Original file line number Diff line number Diff line change
@@ -1,6 +1,145 @@
Changes
=======

v2.14.16
- Ensure restarting of TCP connection if TCP reset is received
before 3 way handshake is finished
- Reworked IPSec connection unblocking if reboot was detected

v2.14.15
- Ensure that all clients receive the security policy update

v2.14.14
- Increased the max allowed number of open file descriptors
from the soft limit to the hard limit for vsomeipd
- Improved handling for EMFILE error (per-process limit of open
filedescriptors reached)
- Fixed client ID assignment

v2.14.13
- Fixed race condition leading to unintended sending
of selective broadcasts.

v2.14.12
- Make timeout during application shutdown configurable via
"shutdown_timeout" json configuration file parameter
- Fix bug leading to too fast reassignment of client IDs acquired via
auto-configuration in conjunction with usage of a non-continuous
diagnosis mask

v2.14.11
- Fixed race condition when opening shared memory
- Fixed race condition when inserting SubscribeEventGroupACK
entries
- Added prefix for security related log messages

v2.14.10
- Fixed race condition in client ID to UID mapping.

v2.14.9
- Fixed race condition in event / response validation
and client ID to UID mapping removal
- Limit reconnect attempts of local client endpoints
- Increase robustness of local server endpoint
in case of corrupted data stream

v2.14.8
- Handle ANY_METHOD for security policy updates

v2.14.7
- Reverted security related feature if same client connects
again with different credentials.

v2.14.6
- Fixed issue related to client ID reuse if security is activated
- Use chmod instead of umask to ensure correct permissions of unix
domain sockets

v2.14.5
- Fixed race condition when handling security policy updates

v2.14.4
- Added whitelist feature for security policy update / removal
- Added / improved security related checks

v2.14.3
- Prevent concurrent access to any client policies

v2.14.2
- Fix possible deadlock when receiving invalid responses from remote
TCP services
- Enabled loading of UID GID specific security configuration during
application startup

v2.14.1
- Check header fields in udp endpoints for correct values
- Fixed race condition in event::notify methods
- Ensure to always resume sending if endpoints were restarted
- Prevent possible concurrent access to receive buffer in endpoints
- Allow or deny all remote clients via security config parameter
- Make receive buffer size configurable for UDP client and
server endpoints via "udp-receive-buffer-size" parameter
in json configuration file
- Fix race condition which could lead to premature resubscription if a
remote service was stop offered and offered again

v2.14.0
- Introduce security policy updates during runtime and extend
security configuration to filter on instance ID and method ID level
For more information see the vsomeipUserGuide.

v2.13.2
- Make I/O thread nice level configurable

v2.13.1
- Improve check of subnet mask for remote subscribers
- Restart TCP connections if too big messages are received
- Don't process subscriptions if IPsec connection isn't established
- Additionally check protocol header fields in tcp endpoints as well
- Fix race when expiring remote services

v2.13.0
- Fix handling of requests send to the service discovery port
- Log time since routing state was set to RS_RESUMED in cyclic version
logger
- Blame externally offered services if routing state is set to
RS_SUSPENDED
- Prevent possible exception during application shutdown

v2.12.3
- Improve handling of broken TCP streams

v2.12.2
- Expire remote subscriptions to local services when routing state is set to
suspending

v2.12.1
- Fixed race condition in event registration

v2.12.0
- Improve magic cookie handling.
- Fix possible deadlock on application shutdown
- Fix handling of local StopOffers when duplicate service instances
are present in the network.
- Make trace connector json configuration more flexible
- Fix bug in security configuration when black listing single
UIDs/GIDs

v2.11.1
- Fix possible deadlock on application shutdown

v2.10.22
- Handle EPERM error (Operation not permitted) in cei::send_cbk
- Restart TCP endpoint if a maximum number of aborted restarts
(due to state == CONNECTING) is reached or if a maximum allowed time since
the connection attempt was started has elapsed
- Fixed missing call of subscription status handlers
for external fields if a following subscription
was done triggered by a service being stopped/expired
- Fixed crash in vsomeip security credential check
- Added Debian hardening compiler flags (requires GCC >= 5.2)
- Fixed compilation with GCC 8

v2.10.21
- Improve memory usage of routing manager.
- Improve handling of incoming SD messages with uncommon entry
Expand Down Expand Up @@ -59,8 +198,6 @@ v2.10.14
- Bugfix for pending subscriptions when same port is used
for TCP and UDP endpoint option.

v2.10.13

v2.10.12
- Fix exception handling for boost logger

Expand Down Expand Up @@ -149,8 +286,6 @@ v2.10.5


v2.10.4
- Extended diagnosis plugin to handle requests for
"disableRxAndEnableTx" and "disableRxAndTx".
- Catch unhandled user code exceptions thrown from called handlers.
- Don't send SubscribeEventGroupNACK for pending subscriptions on next
offer to reduce the amount of StopSubscribe/Subscribe messages.
Expand Down
6 changes: 3 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ cmake_minimum_required (VERSION 2.8.12)
project (vsomeip)

set (VSOMEIP_MAJOR_VERSION 2)
set (VSOMEIP_MINOR_VERSION 10)
set (VSOMEIP_PATCH_VERSION 21)
set (VSOMEIP_MINOR_VERSION 14)
set (VSOMEIP_PATCH_VERSION 16)
set (VSOMEIP_HOTFIX_VERSION 0)

set (VSOMEIP_VERSION ${VSOMEIP_MAJOR_VERSION}.${VSOMEIP_MINOR_VERSION}.${VSOMEIP_PATCH_VERSION})
Expand Down Expand Up @@ -65,7 +65,7 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
set(EXPORTSYMBOLS "-Wl,-export-dynamic -Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/exportmap.gcc")
set(NO_DEPRECATED "")
set(OPTIMIZE "")
set(OS_CXX_FLAGS "-D_GLIBCXX_USE_NANOSLEEP -pthread -O -Wall -Wextra -Wformat -Wformat-security -Wconversion -fexceptions -fstrict-aliasing -fstack-protector -fasynchronous-unwind-tables -fno-omit-frame-pointer -D_FORTIFY_SOURCE=2")
set(OS_CXX_FLAGS "-D_GLIBCXX_USE_NANOSLEEP -pthread -O -Wall -Wextra -Wformat -Wformat-security -Wconversion -fexceptions -fstrict-aliasing -fstack-protector-strong -fasynchronous-unwind-tables -fno-omit-frame-pointer -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security -fPIE -pie -Wl,-z,relro,-z,now")
endif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")

if (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
Expand Down
21 changes: 19 additions & 2 deletions daemon/vsomeipd.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
#include <thread>
#include <condition_variable>
#include <mutex>

#include <cstring>
#include <iostream>

#include <vsomeip/vsomeip.hpp>
Expand All @@ -32,6 +32,11 @@ static std::condition_variable_any sighandler_condition;
static std::recursive_mutex sighandler_mutex;
#endif

#ifndef _WIN32
#include <sys/time.h>
#include <sys/resource.h>
#endif

#ifndef VSOMEIP_ENABLE_SIGNAL_HANDLING
/*
* Handle signal to stop the daemon
Expand Down Expand Up @@ -109,6 +114,18 @@ int vsomeipd_process(bool _is_quiet) {
#endif
if (its_application->init()) {
if (its_application->is_routing()) {
#ifndef _WIN32
// raise the max number of open file descriptors to the hard limit
struct rlimit its_current_fd_limit;
if (-1 == getrlimit(RLIMIT_NOFILE, &its_current_fd_limit)) {
VSOMEIP_ERROR << "Couldn't read out RLIMIT_NOFILE: " << std::strerror(errno);
} else {
its_current_fd_limit.rlim_cur = its_current_fd_limit.rlim_max;
if (-1 == setrlimit(RLIMIT_NOFILE, &its_current_fd_limit)) {
VSOMEIP_ERROR << "Couldn't set RLIMIT_NOFILE: " << std::strerror(errno);
}
}
#endif
its_application->start();
#ifndef VSOMEIP_ENABLE_SIGNAL_HANDLING
sighandler_thread.join();
Expand Down Expand Up @@ -173,7 +190,7 @@ int main(int argc, char **argv) {
return EXIT_SUCCESS;
}

umask(0);
umask(0111);

its_signature = setsid();
if (its_signature < 0) {
Expand Down
Loading

0 comments on commit ee44d19

Please sign in to comment.