summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuergen Gehring <juergen.gehring@bmw.de>2018-01-25 00:40:05 -0800
committerJuergen Gehring <juergen.gehring@bmw.de>2018-01-25 00:40:05 -0800
commit3f1a365a25910caee2c740b3ca3bd4f07c8c0779 (patch)
treefa9756213c153f540a7abae78dcbe617937cd2ee
parent79fd5f7a34ed33392f71fa914a60b2e68b28de68 (diff)
downloadvSomeIP-3f1a365a25910caee2c740b3ca3bd4f07c8c0779.tar.gz
vsomeip 2.10.12.10.1
-rw-r--r--CHANGES4
-rw-r--r--CMakeLists.txt2
-rw-r--r--implementation/endpoints/src/local_server_endpoint_impl.cpp26
-rw-r--r--implementation/endpoints/src/tcp_server_endpoint_impl.cpp26
4 files changed, 19 insertions, 39 deletions
diff --git a/CHANGES b/CHANGES
index 6ab2f57..e1defd0 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,10 @@
Changes
=======
+v2.10.1
+- Fix possible memory corruption in routing manager on TCP connection
+ reset
+
v2.10.0
- Add register_async_subscription_handler to application interface
- Ensure faster stopping of UDP and TCP endpoints
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 39f583c..a35193a 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 0)
+set (VSOMEIP_PATCH_VERSION 1)
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/endpoints/src/local_server_endpoint_impl.cpp b/implementation/endpoints/src/local_server_endpoint_impl.cpp
index 460fe40..aab09cf 100644
--- a/implementation/endpoints/src/local_server_endpoint_impl.cpp
+++ b/implementation/endpoints/src/local_server_endpoint_impl.cpp
@@ -173,25 +173,13 @@ bool local_server_endpoint_impl::get_default_target(
void local_server_endpoint_impl::remove_connection(
local_server_endpoint_impl::connection *_connection) {
- endpoint_type its_target;
- {
- std::lock_guard<std::mutex> its_lock(connections_mutex_);
- for (auto it = connections_.begin(); it != connections_.end();) {
- if (it->second.get() == _connection) {
- its_target = it->first;
- it = connections_.erase(it);
- break;
- } else {
- ++it;
- }
- }
- }
- {
- // delete outstanding responses for this connection as well
- std::lock_guard<std::mutex> its_lock(mutex_);
- const auto found_target = queues_.find(its_target);
- if (found_target != queues_.end()) {
- found_target->second.clear();
+ std::lock_guard<std::mutex> its_lock(connections_mutex_);
+ for (auto it = connections_.begin(); it != connections_.end();) {
+ if (it->second.get() == _connection) {
+ it = connections_.erase(it);
+ break;
+ } else {
+ ++it;
}
}
}
diff --git a/implementation/endpoints/src/tcp_server_endpoint_impl.cpp b/implementation/endpoints/src/tcp_server_endpoint_impl.cpp
index e39589a..dda45bf 100644
--- a/implementation/endpoints/src/tcp_server_endpoint_impl.cpp
+++ b/implementation/endpoints/src/tcp_server_endpoint_impl.cpp
@@ -140,25 +140,13 @@ bool tcp_server_endpoint_impl::get_default_target(service_t,
void tcp_server_endpoint_impl::remove_connection(
tcp_server_endpoint_impl::connection *_connection) {
- endpoint_type its_target;
- {
- std::lock_guard<std::mutex> its_lock(connections_mutex_);
- for (auto it = connections_.begin(); it != connections_.end();) {
- if (it->second.get() == _connection) {
- its_target = it->first;
- it = connections_.erase(it);
- break;
- } else {
- ++it;
- }
- }
- }
- {
- // delete outstanding responses for this connection as well
- std::lock_guard<std::mutex> its_lock(mutex_);
- const auto found_target = queues_.find(its_target);
- if (found_target != queues_.end()) {
- found_target->second.clear();
+ std::lock_guard<std::mutex> its_lock(connections_mutex_);
+ for (auto it = connections_.begin(); it != connections_.end();) {
+ if (it->second.get() == _connection) {
+ it = connections_.erase(it);
+ break;
+ } else {
+ ++it;
}
}
}