Skip to content

Conversation

@duartenfonseca
Copy link
Collaborator

No description provided.

lutzbichler and others added 11 commits April 23, 2025 17:01
Summary
Enable configuration of client-specific debouncing
Details
Client-specific configuration did already exist. They could be done using the
vsomeip-lib API ("subscribe_with_debounce"). They could also be added to the
configuration. But this did not have the desired effect. With this PR, you can
configure a global debouncing as well as overrides for specific clients.
Summary
Allow global configuration of maximum (additional) dispatchers and dispatch time
Details
The maximum number of (additional) dispatchers is predefined to 10 and the
maximum dispatch time is predefined to 100ms. This can be overwritten by
application specific settings, but cannot be globally changed. This pull request
enables a global setting of the two values. These can still be overwritten by
application specific values.
Summary

Minor logging changes, mainly hex values or typos
Removed the numbering of the configurations
Summary
Remove pending subscription entry right after
calling on_subscription from application impl
Details
Removing a pending subscription from pending
subscriptions map fixes a problem where
pending subscriptions where being remove only
on the lambda function passed to on_subscription,
and if the on_subscription function was stuck and
the client received another on_routing_info message
before the pending subscription was removed that
subscription would be processed multiple times
Summary
Unspecify catch exception.
boost exceptions are not part of std::exception, at least in the Android platform.
Summary
Force endpoint to perform port assignment when network interface becomes available.
Details
When the network interface goes down, all vSomeIP clients stop both their local vsomeip
client and server endpoints. When the server endpoint is stopped, the assigned port is
"released" and can be assigned to another server endpoint. At that instance,
if a VSIP instance is created, its endpoints creation are postponed until the interface
becomes available, when it does, the new instance might reuse the ports assigned to
another instance that still has to "rebind" the socket.
This solution forces all endpoints to redo the ports assignment process when the
network interface becomes available.
For duplicated notifications, the endpoint does not redo the assignment process.
Summary
Removes the interface index when we get a RTM_DELLINK
Details
Resetting the flag on DELADDR/DELLINK results in incorrect/no reporting when the
interfaces comes up again. Erase the entry instead. It will be redone on NEWADDR
when the interface/address comes up again.
Summary
Added additional offer check on responses/notifications
Details
For each received response/notification, call is_client_allowed_to_offer to check
whether the sending client is allowed to offer the service. This is done only for
internal TCP communication; for UDS the check is done with the bound client.
Summary
Reset routing root on net_state_change off.
Also check on local_tcp_client and local_uds_client if socket is open before sending.
Details
If the local interface gets toggles down/up, while also clients are being created,
there could be the case where 2 clients get the same port assigned.
This was resolved by Perform endpoint port assignment on vnet on
However, in that PR the clients always reset their local endpoints, while the host didn't.
This PR fixes a new scenario where the Host could have a race condition while a client was registering
and the host it self was handling the deregistration of the same client, due to the endpoint reset.
To fix this the Host also needs to reset its local client endpoint (root_) when the local interface goes down
and clear its local client connections.
Also the local client endpoints need to check if the socket is open before triggering an async_write
operation, like its done for the external tcp endpoints, to avoid getting stuck in a broken pipe error loop.
Summary
Add missing mutex on request_debounce_timeout_ck and reset
request_debounce_timer_running_ if requests_to_debounce_ is empty
Details
A missing request was not being sent, caused by the execution of release_service
while request_debounce_timer_ was elapsing. The release_service function would
delete a service from requests_to_debounce while request_debounce_timer_.expires_from_now
was running and when request_debounce_timeout_cbk was called, it would not do anything
because requests_to_debounce_ was empty. Not resetting request_debounce_timer_running_
would prevent further requests from being sent.
A missing mutex, guarding the state, was also added
Summary
start endpoint only on creation, reset is_sending_ and switch order of
start_connecting_timer() and connecting_timer_state_ change execution
Details
As it was, endpoints would start every time find_or_create_local would
execute, even if endpoint already existed.
The boolean is_sending_ was not being set to false on broken pipe or
operation aborted. Also added error message to logs on those cases.
start_connecting_timer() was being executed before setting
connecting_timer_state_ to IN_PROGRESS.
Added additional log to inform about endpoint state upon
successful connection
@duartenfonseca duartenfonseca merged commit 3a85e41 into master Apr 24, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants